嗨我只有在DB2中有這個問題,我使用普通的jdbc執行一個簡單的查詢。
然後我獲取ResultSet,並在結果集的獲取過程中,調用另一個方法,該方法又執行另一個查詢(打開和關閉另一個ResultSet)。 當控件返回給調用者時,我的原始ResultSet被關閉,這真的很奇怪。
PS:下面我發佈的代碼可以正常使用Sql Server和DB2 Express,但是在客戶端環境(DB2在Z/OS上)與驅動程序版本3.64.82沒有。錯誤com.ibm.db2.jcc.am.SqlException:[jcc] [t4] [10120] [10898] [3.64.82]操作無效:結果集關閉。 ERRORCODE = -4470,SQLSTATE = null
..........
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"));
}
........
//其他方法
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;
}
sql-server標記用於Microsoft SQL Server,使用它標記DB2問題是沒有意義的。 –
您是否禁用連接上的自動提交功能? –
不,我不明白爲什麼我必須禁用自動提交,如果我只執行一個簡單的查詢(選擇)。你能解釋一下嗎?非常感謝 – csciandr