<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    牛仔褲的夏天

    JAVA是藍色的- online

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      30 隨筆 :: 5 文章 :: 15 評論 :: 0 Trackbacks
    在Jdon.com里面看到的,覺得很值得借鑒
    原文:http://www.jdon.com/jive/thread.jsp?forum=16&thread=302

    看下面比較:

    public List getUsers() 
      ResultSet rs 
    = userDbQuery();
      List retval 
    = new ArrayList();
      
    while (rs.next()) {
        retval.add(rs.getString(
    1));
      }

      
    return retval;
    }
    上面是個我們采取返回Collection后最常用的方法,將ResultSet中的用戶名加入List再返回,顯然這很耗費內(nèi)存。

    使用Iterator返回:
    public Iterator getUsers() {
      
    final ResultSet rs = userDbQuery();
        
    return new Iterator() {
          
    private Object next;
          
    public void hasNext() {
            
    if (next == null{
              
    if (! rs.next()) {
                
    return false
              }
     
              next 
    = rs.getString(1);
            }

            
    return true;
          }


          
    public Object next() {
            
    if (! hasNext()) {
              
    throw new NoSuchElementException();
            }

            String retval 
    = next;
            next 
    = null;
            
    return retval;
          }


          
    public void remove() {
            
    throw new UnsupportedOperationException ("no remove allowed");
          }

       }

    }

    這個Javabean只是做了一個指針傳遞作用,將調(diào)用本Javabean的指針傳遞到ResultSet,這樣既提高了效率,節(jié)約了內(nèi)存,又降低了偶合性,這是堪稱中間件典型的示范。


    posted on 2006-03-15 16:56 luckyrobbie 閱讀(5453) 評論(6)  編輯  收藏 所屬分類: Java

    評論

    # re: 一個取到ResultSet后返回Iterator的例子 2006-03-15 18:00 劍事
    兩種方法各有優(yōu)點
    不過感覺也都一般
    第一個占內(nèi)存,損失了內(nèi)存又沒方便多少
    第二個占連接,損失了連接又沒快多少

    http://www.tkk7.com/jfy3d/archive/2005/05/12/4185.html
    我實現(xiàn)的比第一個方便  回復(fù)  更多評論
      

    # re: 一個取到ResultSet后返回Iterator的例子 2006-03-15 20:40 luckyrobbie
    “第二個占連接,損失了連接又沒快多少” 沒損失,連接斷了后rs依然存在的

    你的做法和我以前的做法一樣的,把一行放在一個HashMap中,然后把結(jié)果集封裝在一個Vector或者ArrayList中,然后在通過客戶化的標簽進行View的顯示,你可以看我這篇隨筆http://www.tkk7.com/luckyrobbie/archive/2006/03/10/34648.aspx  回復(fù)  更多評論
      

    # re: 一個取到ResultSet后返回Iterator的例子 2006-03-16 07:25 劍事
    連接con.close后
    next = rs.getString(1);
    是不能用的
    不知道你親手測試了沒  回復(fù)  更多評論
      

    # re: 一個取到ResultSet后返回Iterator的例子 2006-03-16 08:27 luckyrobbie
    connection關(guān)閉后,resultset是可以遍歷的
    statement關(guān)閉后,就不能遍歷了  回復(fù)  更多評論
      

    # re: 一個取到ResultSet后返回Iterator的例子 2006-03-16 08:54 boss_ch
    connection關(guān)閉后,resultset是可以遍歷的
    這是因為在使用連接池的情況下,Connection.close 是把連接返回給連接池了,但是沒有實際的關(guān)閉數(shù)據(jù)庫的網(wǎng)絡(luò)連接,所以,rs 是可以遍歷的,但是這時候 Conention 的狀態(tài)就不是剛創(chuàng)建連接時的狀態(tài)了。 

    實際上,上文所說的這種迭代模式,實在是一個壞做法。不要誤導(dǎo)初學(xué)者  回復(fù)  更多評論
      

    # re: 一個取到ResultSet后返回Iterator的例子 2006-03-16 09:24 luckyrobbie
    @boss_ch
    不用連接池啊
    為何你認為是不好的做法?  回復(fù)  更多評論
      

    主站蜘蛛池模板: 国产又粗又长又硬免费视频| 久久精品国产精品亚洲精品| 一级毛片在播放免费| 国产自偷亚洲精品页65页| 6080午夜一级毛片免费看| 亚洲av日韩av永久无码电影| 日韩一卡2卡3卡4卡新区亚洲| 88av免费观看入口在线| 国产精品亚洲一区二区三区 | 亚洲国产成a人v在线观看| 免费一级e一片在线播放| 国产成人精品免费久久久久| 亚洲爆乳无码精品AAA片蜜桃| 亚洲欧洲自拍拍偷午夜色无码| 中文字幕人成无码免费视频| 精品人妻系列无码人妻免费视频 | 亚洲成a人片毛片在线| 亚洲精品综合久久| av无码国产在线看免费网站| 色吊丝性永久免费看码 | 久久国产一片免费观看| 亚洲乱码在线观看| 亚洲午夜精品一区二区| 哒哒哒免费视频观看在线www | 亚洲国产成人精品无码久久久久久综合| 久9这里精品免费视频| 青娱乐在线视频免费观看| 亚洲va在线va天堂va手机| 亚洲va中文字幕无码久久| 亚洲精品视频免费| 成年美女黄网站色大免费视频| 免费国产99久久久香蕉| 日日躁狠狠躁狠狠爱免费视频| 久久综合久久综合亚洲| 77777_亚洲午夜久久多人| 中文亚洲AV片在线观看不卡| 韩国欧洲一级毛片免费| 男女免费观看在线爽爽爽视频 | 国产免费久久久久久无码| 亚洲精品无码一区二区| 亚洲精品中文字幕无乱码|