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

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

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

    牛仔褲的夏天

    JAVA是藍色的- online

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      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再返回,顯然這很耗費內存。

    使用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只是做了一個指針傳遞作用,將調用本Javabean的指針傳遞到ResultSet,這樣既提高了效率,節約了內存,又降低了偶合性,這是堪稱中間件典型的示范。


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

    評論

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

    http://m.tkk7.com/jfy3d/archive/2005/05/12/4185.html
    我實現的比第一個方便  回復  更多評論
      

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

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

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

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

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

    實際上,上文所說的這種迭代模式,實在是一個壞做法。不要誤導初學者  回復  更多評論
      

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

    主站蜘蛛池模板: 成年在线观看网站免费| 国产亚洲免费的视频看| 国产日本一线在线观看免费| 亚洲成a人片在线观看中文动漫| 好猛好深好爽好硬免费视频| 亚洲精品动漫人成3d在线| 天堂亚洲免费视频| 亚洲国产精品国产自在在线| 一级毛片a女人刺激视频免费| 亚洲伊人成无码综合网| 伊人免费在线观看| 亚洲人成网址在线观看| 免费观看激色视频网站(性色)| 亚洲色图视频在线观看| 色窝窝免费一区二区三区 | 久操视频在线免费观看| 亚洲精品天天影视综合网| 91精品免费久久久久久久久| 亚洲国产中文在线二区三区免| 免费人成视频在线| 老司机免费午夜精品视频| 亚洲日韩欧洲乱码AV夜夜摸 | 最新亚洲成av人免费看| 亚洲嫩模在线观看| 国产精品免费观看久久| 色妞www精品视频免费看| 久久久久亚洲精品无码网址| 日韩电影免费在线观看| 亚洲精品人成网在线播放影院| 免费a在线观看播放| 美女视频黄的免费视频网页| 亚洲视频在线观看网站| 国产男女性潮高清免费网站| 成人毛片100免费观看| 亚洲乱码卡一卡二卡三| 亚洲av无码成人精品区| 巨波霸乳在线永久免费视频| 亚洲1区2区3区精华液| 亚洲国产成人精品不卡青青草原| 成人免费视频观看无遮挡| 久久久精品视频免费观看|