2

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

4

2 回答 2

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

于 2013-10-07T18:58:19.027 回答
1

这也有效:SqlDataReader.GetProviderSpecificValue()

于 2013-10-07T19:15:21.753 回答