来自C#抛出异常的ExecuteNonQuery()-将数字转换为数据类型数字的算术溢出错误

时间:2019-03-28 08:46:42

标签: c# sql-server ado.net

我有一个奇怪的情况,我有一个通过ADO.Net从C#应用程序中调用的SP,该SP不返回任何数据。它抛出以下异常,但是当我在SSMS中以相同的参数执行SP时,它没有任何问题。

除了用C#代码调用SP之外,没有其他动作。

错误:System.Data.SqlClient.SqlException(0x80131904):类型为int的算术溢出错误,值= 2344000000.000000

在C#代码中,使用ExecuteNonQuery()调用SP,并引发Arithematic溢出异常。

我将其更改为ExecuteScalar(),没有错误,我可以确认问题出在sql server还是ADO.Net上,因为SSMS中的SP执行始终没有任何问题。

由于SP不返回任何数据,因此ADO.NET ExecuteNonQuery将获得受影响的行数作为返回值,并且该数目可能大于Power(2,31),并且可能是Arithematic溢出异常的原因但是我的数据库表中没有超过Power(2,31)行。这只是我的猜测。

1 个答案:

答案 0 :(得分:0)

这意味着该值对于int类型而言太大,因此会溢出

有符号整数的最大值是2,147,483,647

所以2344000000将返回此错误