关于DB2 jdbc连接数据库,ResultSet自动关闭猜想

问题:java使用db2jcc.jar和db2jcc_license_cu.jar驱动连接DB2数据库,在程序中抛如下异常:
com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] 操作无效:已关闭 result set。
at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
at com.ibm.db2.jcc.c.wf.c(wf.java:247)
at com.ibm.db2.jcc.c.wf.next(wf.java:234)

第一次接触DB2,痛苦万分。。。
对上面的异常我表示很不可思议,反复检查代码,发现在抛出该异常之前并为关闭resultset。俗话说内事不决找baidu,外事不决找google,于是,我在2大搜索引擎上折腾许久,没有对口的。
没办法了,只能自力更生了,我猜是不是DB2自动关闭的。
于是写了几行代码测试了一下,如下:

int j = 1;
boolean eof;
while(rs != null){
eof = rs.next();
if(eof){
System.out.println(j);
j++;
} else {
System.out.println("======================== null");
}
}


运行结果如下:
======================== null
com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] 操作无效:已关闭 result set。
at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
at com.ibm.db2.jcc.c.wf.c(wf.java:247)
at com.ibm.db2.jcc.c.wf.next(wf.java:234)
果然,当rs.next()读出来是null时,DB2将resultSet关闭了,再执行rs.next()就会抛出已关闭异常。。。
当我把数据库连接换成oracle时,当读出来是null时,不关闭resultSet,只会一直打印======================== null

关于DB2自动关闭resultSet只是我的猜测,暂未找到理论依据,我也没有去ibm官网求证(英文伤不起)。

总结:一直觉得自己在解决问题上的能力比较薄弱,碰到问题通常“一查二问三猜”—去网上查相关资料,问身边的朋友,自己写个代码瞎猜,再就没辙了。。。

希望无所不能的大虾们不吝赐教,多谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值