2009-12-16 86 views
1

原题:为什么我会在ADO.NET中将数值转换为数据类型数值的算术溢出错误?

为什么我得到一个算术溢出错误使用货币数据类型时,金额低于$ 999,999,99更大的数值转换为数据类型数字在ADO.NET代码?


正如问题说......我有一个会谈到SQL Server 2008数据库中的数据访问层位的ADO.net代码。表格中有一个数据类型为“Money”的金额列。用的量< $ 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

这是一个非常长的标题..... – 2009-12-16 16:20:56

+0

什么数据类型是金额变量? – 2009-12-16 16:28:29

+0

Amount变量的类型= Decimal – codethrift 2009-12-16 16:32:08

回答

1

如果发生呼叫用的值的存储过程的误差,但是,当直接与相同的值,则使得在所述@Amount参数的数据类型转换suspition更新表中未发生错误。确保它也被定义为Money。

+0

正如您通过您的问题指出的......金额是小数,但sql列是金钱。一旦我在调用存储过程之前转换了它的值,它就完美了:CType(Amount,Data.SqlTypes.SqlMoney)。谢谢! – codethrift 2009-12-16 16:41:41

相关问题