为什么在ADO.NET中出现将数字转换为数据类型为数字的算术溢出错误?

时间:2009-12-16 16:18:50

标签: .net sql sql-server-2008 ado.net sqlcommand

原始问题:

为什么在金额大于$ 999,999,99时使用Money数据类型在ADO.NET代码中将数字转换为数据类型为数字时会出现算术溢出错误?


正如问题所说......我在数据访问层中有一些与Sql Server 2008数据库对话的ADO.net代码。表中有一个Amount列,其数据类型为“Money”。插入金额<1的记录时,代码工作正常。 $ 1,000,000,但是当金额>> $ 1,000,000时会抛出此错误:

“将数字转换为数据类型数字的算术溢出错误”

我可以手动对数据库运行t-sql,将数量更新为大于$ 1,000,000的值,这样数据库就可以了,除了数量之外......下面的SqlCommand导致错误触发的是什么?

        MyCommand.Parameters.Add(New SqlParameter("@Amount", SqlDbType.Money))
        If IsNothing(Amount) Then
            MyCommand.Parameters("@Amount").Value = Convert.DBNull
        Else
            MyCommand.Parameters("@Amount").Value = Amount
        End If

1 个答案:

答案 0 :(得分:1)

如果使用值调用存储过程时发生错误,但直接使用相同值更新表时不会发生错误,则会对@Amount参数的数据类型产生怀疑。确保它也被定义为Money。