我在Oracle当中的数据类型是NUMBER(3)。
然后我在Java中的数据类型是BigDecimal。
存取都很正常,但是我在插入1000的时候他就抛出了以下这种异常,请问如何解决?
java.sql.SQLException: ORA-01438: 被指定的精度超过列所指定范围就是想问一下如何判断BigDecimal的值大于了NUMBER(3)呢?
NUMBER(3)的意思是什么呢?小于三位的整数吗?

解决方案 »

  1.   

    将BigDecimal类型强制转换为int型就可以,他们类型不同不同存储的类型也不同,故会抱错
      

  2.   

    不正确,转换成int型的话,同样1000也是int型啊,可数据库里的是NUMBER(3)型的。不让输进去
      

  3.   

    NUMBER(3),就是三位整数,1000当然不行了
    BigDecimal类型数据对位数不做限制,理论上可以任意大,你可以用BigDecimal下的DoubleValue()函数,得到它相对应的double类型值,然后去和num(3)进行比较
    ps:不要将BigDecimal转换为int类型,因为BigDecimal可以带小数点,但转换为int后小数点以后的数字会删去,比较大小就不准确了。