每当我在调试中运行程序时它都能正常运行,但是,一旦我将它转换为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()作为监视并重新评估它,它会抛出相同的异常。
答案 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查询的返回值。因此,我建议将多线程问题作为原因。