java 中ResultSet的getDouble方法

今天在写代码的时候,遇到一个问题。

业务很简单,就是select出来一些数据,然后java代码去拿这些数据。例如:

select column1, column2 from table;

然后拿到ResultSet集合,遍历这个集合。

然后我们的业务是要对取出来的数据为NULL的值,就是设置为NULL。然后代码是这么写的(其实是Copy的其他地方的代码),

Double value= resultSet.getDouble("column1");

原来以为这么写也是没有问题的,但是结果发现就是取不到NULL的情况,当值为NULL的时候,取出来的结果就是为0. 这个跟实际的case是不吻合的。后来用了getBigDecimal,就没有出现这个问题了。

通过Java 的Docs文档,我们可以发现有这么一句话:

Returns:

           the column value; if the value is SQL NULL, the value returned is 0.

并且在java 编程语言中,getDouble方法的ResultSet object 是作为一个double的来看待的,double作为原始数据类型,是没有NULL的值的。所以NULL就被默认转换成了0. 而getBigDecimal方法是不会这样的,数据库里是啥,取出来的结果就是啥。并且会带有全部的精度。

---EOF---

你可能感兴趣的:(java 中ResultSet的getDouble方法)