请问各位大虾有遇到过这种JDBC的问题吗?

时间:2022-08-18 21:22:18
我遇到了一个很奇怪的事情,在Windows下写的用户JDBC的程序,可以操作数据库,可以正常执行完成,放到linux的服务器上出现了当处理2000条时候就会报告
:COM.ibm.db2.jdbc.DB2Exception: [IBM][JDBC Driver] CLI0601E  语句句柄无效或语句已关闭。SQLSTATE=S1000
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throwClosedError(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2ResultSet.checkHandlesAndIndex(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2ResultSet.next(Unknown Source)

.请问有人有遇到过吗,谁知道如何解决?

2 个解决方案

#1


兄台,用executeBatch来做批量处理,Statement和PreparedStatement都可以。

rs一次开太多会有这个问题:
con=***
ps=***
rs=***
for(...){
   rs = ps.execute(sql) -----就是这种方式,开太多会出问题。
}
rs.close
ps.close
con.close

db2能支持到2000?我的oracle92默认只有300。。。

#2


目前有两个现象: 
1 相同的程序,在windows的java环境下可以顺利完成,移植到linux环境下就会出现rs.next()超过2000时候会出错。
2 如果linux下只打开rs,不做其它事务操作,可以顺利遍历所有的rs结果。
请问有什么线索吗? 

#1


兄台,用executeBatch来做批量处理,Statement和PreparedStatement都可以。

rs一次开太多会有这个问题:
con=***
ps=***
rs=***
for(...){
   rs = ps.execute(sql) -----就是这种方式,开太多会出问题。
}
rs.close
ps.close
con.close

db2能支持到2000?我的oracle92默认只有300。。。

#2


目前有两个现象: 
1 相同的程序,在windows的java环境下可以顺利完成,移植到linux环境下就会出现rs.next()超过2000时候会出错。
2 如果linux下只打开rs,不做其它事务操作,可以顺利遍历所有的rs结果。
请问有什么线索吗?