算术运算导致溢出.删除 AS400 中的数据时



当我尝试从AS400中删除数据时,我遇到了一个奇怪的错误。当我执行这个程序时,在状态cmd.ExecuteNonQuery()上,我得到了算术运算导致溢出。
我在这里没有使用任何数字,但我遇到了这样的错误。
我尝试调试这个程序,但在执行cmd.ExecuteNonQuery()语句时没有问题。但是当我运行可执行文件时,总是出现错误。我不明白我犯了什么错误。希望有人能帮助我。谢谢。。。


这是源代码:

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

我尝试从AS400手动执行查询,它工作正常。

你有实际的SQL错误代码吗? 您可以使用 SQL 消息查找器获取更多详细信息。

我建议从收集 ODBC 跟踪 (SQL.日志)以识别任何问题。

如果这没有帮助,我将使用服务器端 ODBC 诊断和性能工具中概述的步骤检查 QZDASOINIT 作业日志

这个问题

来晚了,但我会留下这个问题,以防其他人遇到这个问题。我在调用 AS400 程序时也有一个算术溢出,该程序没有返回任何数据并且正在使用ExecuteNonQuery

关键是堆栈跟踪:

   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 解决了这个问题。

最新更新