嗨,我只在DB2中有这个问题,我使用普通的jdbc来执行一个简单的查询.
然后我获取ResultSet,并且在获取结果集期间,我调用另一个方法,该方法又执行另一个查询(打开和关闭其他ResultSet).当控件回到调用者时,我的原始ResultSet被关闭,这真的很奇怪
.PS:我在下面发布的代码可以正常使用Sql Server,甚至可以使用DB2 express,但是在客户端环境中(DB2 on Z/OS) )驱动程序版本3.64.82没有.
..........
PreparedStatement pst=conn.prepareStatement(query);
ResultSet rs=pst.executeQuery();
while(rs.next()){
System.out.println("Id:"+rs.getInt("ID"));
System.out.println("ULTERIORE SPECIFICA "+getUlterioreSpecifica(conn,rs.getInt("ID")));
System.out.println("Desc: "+rs.getString("DESC"));
System.out.println("ETA: "+rs.getInt("ETA"));
}
........
Run Code Online (Sandbox Code Playgroud)
//其他方法
private static String getUlterioreSpecifica(Connection conn, int int1) throws Exception{
String query="select ult_desc from specifica where id=?";
String retVal="";
PreparedStatement pst=conn.prepareStatement(query);
pst.setInt(1, int1);
ResultSet rs=pst.executeQuery();
while(rs.next()){
retVal=rs.getString(1);
}
rs.close();
pst.close();
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
您可能正在以自动提交模式工作,并且此特定驱动程序的默认行为可能是在提交时关闭结果集.
所以根据评论我怎样才能避免ResultSet在Java中被关闭的异常?
您需要做的是ResultSet.HOLD_CURSORS_OVER_COMMIT在创建语句时设置.
| 归档时间: |
|
| 查看次数: |
5274 次 |
| 最近记录: |