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

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

          正確的代碼:

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


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

            1.就多創(chuàng)建幾個(gè)stmt,一個(gè)stmt對(duì)應(yīng)一個(gè)rs;

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

           

          多個(gè)stmt對(duì)應(yīng)各自的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) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 闻喜县| 梓潼县| 繁峙县| 朝阳市| 固阳县| 武川县| 抚远县| 通海县| 屯昌县| 古浪县| 珲春市| 江源县| 武夷山市| 新河县| 鹤岗市| 明溪县| 壶关县| 时尚| 固镇县| 弥渡县| 北海市| 茌平县| 宁安市| 静宁县| 台东市| 常宁市| 磴口县| 桓仁| 建始县| 泊头市| 舞阳县| 翼城县| 宁化县| 盐池县| 兰溪市| 泸西县| 周至县| 河北区| 江阴市| 康保县| 高平市|