隨筆-71  評論-5  文章-0  trackbacks-0
          一個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();

          原文URL : 
          http://www.cnblogs.com/haore147/p/3617767.html
          posted on 2015-10-13 14:58 藤本薔薇 閱讀(222) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 长宁县| 河东区| 新丰县| 昌黎县| 莫力| 西贡区| 永川市| 丰原市| 虎林市| 临城县| 凉城县| 夏津县| 万盛区| 绥江县| 濉溪县| 肥西县| 汝南县| 江川县| 博白县| 红安县| 海门市| 高唐县| 奉贤区| 南华县| 河南省| 灵川县| 陈巴尔虎旗| 合水县| 眉山市| 邳州市| 新龙县| 徐水县| 巨野县| 广安市| 三河市| 双流县| 绥阳县| 和政县| 麻阳| 榆林市| 三穗县|