`
men4661273
  • 浏览: 275641 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jdbc的ResultSet结果集,数字类型的null取出后为0

阅读更多
数据库里面的int,decimal等类型的字段值为null, 通过jdbc的ResultSet的getInt("x")或者getDouble("x")取出来之后是null吗,并不是,之前并没有太在意,一直以为取出来应该是null,后来偶然发现居然不是null,是0。。 然后就好奇,查了下为什么会是0。
先翻了下api,看了下ResultSet接口的getInt("x")返回值,一下就明白了,是int 而不是Integer,
public abstract int getInt(String paramString)
 接口定义的时候就已经决定了它的返回值,
那么我们可以获取null的值吗,用于区分null和0?答案是可以的!
方法一:
public abstract Object getObject(String paramString)
通过这个接口,我们可以获取,如果字段为null,会返回null值,这样我们就可以来区分到底是0还是null了,就像这样
Object object = rs.getObject("xx");
if (object == null) {
	o.setXx(null);
}else{
	……
}
 方法二:
o.setA(rs.getInt("xx"));
if (rs.wasNull()) {
     o.setA(null);
}
 wasNull()方法可以判断最后一次get到的数据是否是null的,但是一定要紧跟在需要判断的那个列的get后面!!
不过话说ResultSet接口为什么定义为只返回基本数据类型呢,或许是因为数据库里面的null难优化,提醒我们数据库的字段最好不要为null把
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics