Operation not allowed after ResultSet closed--操作mysql数据库
生活随笔
收集整理的這篇文章主要介紹了
Operation not allowed after ResultSet closed--操作mysql数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個stmt多個rs進行操作.那么從stmt得到的rs1,必須馬上操作此rs1后,才能去得到另外的rs2,再對rs2操作.不能互相交替使用,會引起rs已經關閉錯誤——Operation not allowed after ResultSet closed.
| 1 2 3 4 5 6 7 8 9 10 | 錯誤的代碼如下: ?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(); |
正確的代碼:
| 1 2 3 4 5 6 7 | 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后再處理其他的,如上"正確代碼".
| 1 2 3 4 5 6 7 8 9 | 多個stmt對應各自的rs. stmt=conn.createStatement(); stmt2=conn.createStatement(); rs=stmt.executeQuery("select * from t1"); rst=stmt2.executeQuery("select * from t2"); rs.last(); rst.last(); |
?
總結
以上是生活随笔為你收集整理的Operation not allowed after ResultSet closed--操作mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人博客mysql 建表与数据测试
- 下一篇: Mysql 分页语句Limit用法