OverflowException从db读取十进制值

时间:2013-10-07 18:27:28

标签: .net sql-server decimal

我有一个SQL Server列定义十进制(32,15)。当我尝试使用SqlDataReader.GetValue()读取它时,我发现可以容纳的最大db值是79,228,162,514,264。值越大,抛出溢出。这是令人惊讶的,因为.net十进制类型是128位并提供28到29位精度。有人可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

使用SqlDataReader.GetSqlDecimal()代替SqlDataReader.GetValue()

以下是详细问题的示例:

http://weblogs.sqlteam.com/mladenp/archive/2010/08/31/when-does-sql-server-decimal-not-convert-to-net-decimal.aspx

答案 1 :(得分:1)

这也有效:SqlDataReader.GetProviderSpecificValue()