【问题标题】:OverflowException reading decimal value from db从数据库读取十进制值的溢出异常
【发布时间】:2013-10-14 10:43:09
【问题描述】:

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

【问题讨论】:

    标签: .net sql-server decimal


    【解决方案1】:

    使用SqlDataReader.GetSqlDecimal() 而不是SqlDataReader.GetValue()

    这里是一个详细的问题示例:

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

    【讨论】:

    • 有趣。感谢您的链接。看起来像一个 .net 缺陷。
    【解决方案2】:

    这也有效:SqlDataReader.GetProviderSpecificValue()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多