原始问题:
当金额大于 $999,999,99 时,为什么在 ADO.NET 代码中使用 Money 数据类型将数字转换为数据类型数字时出现算术溢出错误?
正如问题所说...我在与 Sql Server 2008 数据库对话的数据访问层中有一些 ADO.net 代码。表中有一个数据类型为“Money”的 Amount 列。该代码在插入金额 < 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