2009-12-16 66 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

相關問題