2012-11-26 73 views
0

當我試圖從AS400刪除數據時,出現了一個奇怪的錯誤。當我執行這個程序時,在狀態cmd.ExecuteNonQuery()我得到算術操作導致溢出。
我沒有在這裏使用任何數字,但我有這樣的錯誤。
我試圖調試此程序,但執行cmd.ExecuteNonQuery()語句時沒有問題。但是當我運行可執行文件時,錯誤總是顯示出來。我不明白我犯了什麼錯誤。希望有人能幫助我。謝謝...算術運算導致溢出。當在AS400中刪除數據時


這是源代碼:

...     
using (OdbcCommand cmd = new OdbcCommand()) 
{ 
    cmd.Connection = conn; 
    cmd.CommandText = "DELETE FROM MDPDTAM.IWMDPOC"; 
    cmd.ExecuteNonQuery(); 
} 
... 

我試圖從AS400手動執行的查詢,它的做工精細。

+0

你有任何「關於刪除」的觸發器嗎? – dasblinkenlight

+0

不,我沒有任何觸發器..我試圖在as400中手動執行查詢,它工作正常。 – Praditha

+0

可能不是實際的解決方案。您可以將源代碼中的配置文件與可執行文件夾中的配置文件進行比較 - >可能使用不同的設置,如命名格式/關鍵字。嘗試.Net提供程序或Oledb,與Odbc相比,我面臨的問題更少 – lamLam

回答

2

遲到了這個問題,但我會留下這個以防萬一別人遇到這個問題。對於沒有返回數據並且正在使用ExecuteNonQuery的AS400程序的調用,我也有一個算術溢出。

的關鍵是堆棧跟蹤:

at System.Data.Odbc.OdbcStatementHandle.RowCount(SQLLEN& rowCount) 
    at System.Data.Odbc.OdbcDataReader.GetRowCount() 
    at System.Data.Odbc.OdbcDataReader.FirstResult() 
    at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod) 
    at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader) 
    at System.Data.Odbc.OdbcCommand.ExecuteNonQuery() 

雖說正在從調用拋出了一個異常處理返回的代碼返回任何行。

我發現該項目已切換到創建64位應用程序而不是32位(即使vshost可執行文件是64位)。正在使用的ODBC驅動程序是32位的,因此不匹配導致了異常。將項目更改爲x86可解決此問題。

相關問題