隨筆-71  評論-5  文章-0  trackbacks-0
          一個stmt多個rs進行操作.那么從stmt得到的rs1,必須馬上操作此rs1后,才能去得到另外的rs2,再對rs2操作.不能互相交替使用,會引起rs已經(jīng)關閉錯誤——Operation not allowed after ResultSet closed.

          錯誤的代碼如下:
           stmt=conn.createStatement();
           
           rs=stmt.executeQuery("select * from t1");
           rst=stmt.executeQuery("select * from t2");
           
           rs.last();
              //由于執(zhí)行了rst=stmt.executeQuery(sql_a);rs就會被關閉掉!所以程序執(zhí)行到此會提示ResultSet已經(jīng)關閉.錯誤信息為:java.sql.SQLException: Operation not allowed after ResultSet closed
           
          rst.last();

          正確的代碼:

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


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

            1.就多創(chuàng)建幾個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 藤本薔薇 閱讀(217) 評論(0)  編輯  收藏

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 洮南市| 吉木萨尔县| 琼中| 洛阳市| 绥化市| 炉霍县| 华池县| 宣武区| 玛纳斯县| 贡觉县| 德江县| 通山县| 临武县| 绍兴县| 健康| 和政县| 胶南市| 元氏县| 宁明县| 铜山县| 革吉县| 舞钢市| 独山县| 武邑县| 天峨县| 托里县| 保定市| 虞城县| 普定县| 石林| 科技| 凤阳县| 昆山市| 河南省| 潮安县| 益阳市| 庐江县| 江城| 重庆市| 衡阳县| 卫辉市|