<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 閱讀(5452) 評論(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ù)  更多評論
      

    主站蜘蛛池模板: 在线看片免费人成视频播| 在线观看免费高清视频| 久久亚洲中文字幕精品有坂深雪| 97在线视频免费播放| 亚洲欧洲专线一区| 亚洲综合无码AV一区二区| 91精品免费在线观看| 国产99视频精品免费视频76| 亚洲毛片基地日韩毛片基地 | 国产亚洲精品AA片在线观看不加载| 两个人看的www免费| 国产成人精品日本亚洲18图| 亚洲人妻av伦理| 国产免费女女脚奴视频网| 久香草视频在线观看免费| 亚洲免费视频播放| 中文亚洲成a人片在线观看| 成年人视频在线观看免费| 青青操视频在线免费观看| 亚洲精品国产综合久久久久紧| 亚洲一区二区三区香蕉| 香蕉视频在线观看免费国产婷婷 | 一级毛片a免费播放王色电影 | 成人性生交大片免费看午夜a| 99免费在线视频| 蜜桃传媒一区二区亚洲AV| 亚洲电影国产一区| 亚洲午夜AV无码专区在线播放| 最近最新MV在线观看免费高清| 永久在线观看免费视频 | 影音先锋在线免费观看| 无码A级毛片免费视频内谢| 夜夜爽妓女8888视频免费观看| 久久亚洲国产成人影院| 亚洲男人第一av网站| 久久精品国产亚洲Aⅴ蜜臀色欲| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 国产成人+综合亚洲+天堂| 亚洲成人黄色在线| 亚洲伊人tv综合网色| 亚洲av中文无码乱人伦在线r▽|