Release上的ExecuteNonQuery()上的整数溢出,而不是Debug(C#)

时间:2016-08-12 08:45:51

标签: c# odbc overflow

每当我在调试中运行程序时它都能正常运行,但是,一旦我将它转换为Release并运行它,我就会从ExecuteNonQuery()中获得溢出。 查询非常简短,如果我在DBMS中手动运行或在调试模式下运行它是一个简单的更新,但由于某种原因它在发布模式下返回溢出(注意:我甚至没有存储值在任何地方,所以溢出不是由变量引起的,而是由函数本身引起的)

提前致谢!

代码:对不起,我完全忘了它!

App.Comando.CommandText = "UPDATE META3.Paramet SET ConPCO = " 
      + numpcoGen.ToString().Replace(",",".") 
      + " WHERE CodEmp = 1 AND Ano =  " + DateTime.Now.Year.ToString();

App.Comando.ExecuteNonQuery();

堆栈跟踪:(不幸的是,ODBC驱动程序是西班牙语,即使IDE和其他所有内容都是英文版...)

  

抛出异常异常:System.Data.dll中的'System.OverflowException'(“Laoperaciónaritméticadeha provocado un desbordamiento。”)System.OverflowException

请注意,我知道连接是不好的做法,但它不需要用户输入,这是管理员想要它的方式。

ExecuteNonQuery()影响一行(手动) - 在发布时,如果我附加一个调试器,它返回-1(仍然不应该是一个问题,imo)并在数据库中修改字段IS。

如果我将ExecuteNonQuery()作为监视并重新评估它,它会抛出相同的异常。

1 个答案:

答案 0 :(得分:0)

我认为问题是由完全不同的东西引起的:并发性。 App.Commando似乎是静态的 - 不同的线程可能会覆盖其内容。 查看Microsoft https://msdn.microsoft.com/en-us/library/a0sdddxt(v=vs.100).aspx的文档:

For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. For all other types of statements, the return value is -1.

由于您报告的返回值为-1,因此它不能是您向我们展示的UPDATE查询的返回值。因此,我建议将多线程问题作为原因。