• DB2 报错:CLI0111E 数值超出范围。 SQLSTATE=22003


    第一次抛出这个异常的时候,就马上着手尝试解决,解决了半小时还是这个问题,有点儿慌了,马上到处搜索,因为没有遇到这个问题,百度,Google,bing。。。。

    搜索SQLstatue,搜索SQLerror,搜索这个错误代码22003.。。。

    都是他娘的坑爹答案,一个东西到处他么的转载,一个错误答案到处他么的转载。。。

    转载的时候你们尝试了吗?解决问题了吗?鄙视这种垃圾程序员。

    使用C#读取DB2数据内容的时候,突然出现这个错误,经过无数次的debug,已经确定了,使用parameters传入的参数无问题,因为如果parameters传入的参数有问题的话,那么在ExecuteReader的时候就会抛出异常了;但是这个错误是在使用reader对象读取的时候抛出的。

    经过反复试验发现,是DB2返回的数据类型和C#实体类属性的数据类型不一致造成的,这个不一致可能会造成数据溢出,

    所以ADO这里直接抛出这个让人摸不着头脑的异常:CLI0111E  数值超出范围。 SQLSTATE=22003

    解决方式是:确定你数据库查询输出的数据类型,如果是数据库输出的是decimal类型,而你使用的接收实体字段属性类型不是decimal类型的,那么就会出现这个问题。

    因为double存储的数据长度和decimal存储的数据长度是不一样的,精度也就不一样,如果数据库输出的是decimal类型,而实体类确实double类型的,这个时候会丢失精度,也就会抛出这个异常了。

    我这里的错误就是,数据库查询出来的是decimal类型的,而我使用的实体类的属性类型确是double类型的,这个时候就出现了这个异常。

    我的最终解决方案是,输出的这个字段类型使用   DOUBLE(round(字段算法,2)),输出double类型,保留两位小数。

    这个是我遇到这个问题的解决方案,如果你也是这个问题,那么应该帮到您了;如果需要精度,建议调整字段类型,与数据库字段的最终类型保持一致。

    技术交流群:88390778

  • 相关阅读:
    WPF 策略模式
    老陈 WPF
    老陈 ASP.NET封装
    小石头 封装
    典型用户故事
    整数的四则运算
    对git的认识
    如何学习计算机
    团队编程二——web应用之人事管理系统
    团队编程——web应用之人事管理系统
  • 原文地址:https://www.cnblogs.com/Object-Class/p/9234269.html
Copyright © 2020-2023  润新知