Operation not allowed after ResultSet closed--操作mysql數據庫


一個stmt多個rs進行操作.那么從stmt得到的rs1,必須馬上操作此rs1后,才能去得到另外的rs2,再對rs2操作.不能互相交替使用,會引起rs已經關閉錯誤——Operation not allowed after ResultSet closed.

錯誤的代碼如下:
 stmt=conn.createStatement();

 rs=stmt.executeQuery("select * from t1");
 rst=stmt.executeQuery("select * from t2");

 rs.last();
    //由於執行了rst=stmt.executeQuery(sql_a);rs就會被關閉掉!所以程序執行到此會提示ResultSet已經關閉.錯誤信息為:java.sql.SQLException: Operation not allowed after ResultSet closed

rst.last();

正確的代碼:

 stmt=conn.createStatement();
 
 rs=stmt.executeQuery("select * from t1");
 rs.last();//對rs的操作應馬上操作,操作完后再從數據庫得到rst,再對rst操作

 rst=stmt.executeQuery("select * from t2");
 rst.last();

一個stmt最好對應一個rs, 如果用一個時間內用一個stmt打開兩個rs同時操作,會出現這種情況.編寫這樣的代碼的操作原則是:
所以解決此類問題:

  1.就多創建幾個stmt,一個stmt對應一個rs;

  2.若用一個stmt對應多個rs的話,那只能得到一個rs后就操作,處理完第一個rs后再處理其他的,如上"正確代碼".

 

多個stmt對應各自的rs.
stmt=conn.createStatement();
stmt2=conn.createStatement();

rs=stmt.executeQuery("select * from t1");
rst=stmt2.executeQuery("select * from t2");

rs.last();
rst.last();

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM