<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 閱讀(5452) 評論(6)  編輯  收藏 所屬分類: Java

    評論

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

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

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

    你的做法和我以前的做法一樣的,把一行放在一個HashMap中,然后把結果集封裝在一個Vector或者ArrayList中,然后在通過客戶化的標簽進行View的顯示,你可以看我這篇隨筆http://www.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
    不用連接池啊
    為何你認為是不好的做法?  回復  更多評論
      

    主站蜘蛛池模板: 久久久免费精品re6| a级成人免费毛片完整版| 国产精品色拉拉免费看| 亚洲福利在线视频| 美女被cao网站免费看在线看| 亚洲欧洲日产国码无码久久99| 一区二区三区免费在线视频| 国产高清免费的视频| 在线播放亚洲精品| 夜色阁亚洲一区二区三区| 无遮挡呻吟娇喘视频免费播放 | 99re6免费视频| 久久久久亚洲av无码专区导航| 欧洲精品99毛片免费高清观看| 亚洲综合网美国十次| 一个人免费高清在线观看| 亚洲卡一卡二卡乱码新区| 国产高清免费在线| 国产午夜无码片免费| 亚洲AV无码第一区二区三区 | 成人免费一区二区无码视频| 久久亚洲精品国产精品婷婷| 国产无遮挡裸体免费视频| 日本一区二区在线免费观看 | 日韩中文字幕精品免费一区| 亚洲av无码专区在线| 免费的一级片网站| 一级毛片免费不卡| 亚洲日本一区二区三区| 黄页免费的网站勿入免费直接进入| 亚洲色欲色欱wwW在线| 亚洲男人的天堂一区二区| 97人妻精品全国免费视频| 亚洲国产精品综合久久网各| 国产精品麻豆免费版| 中国极品美軳免费观看| 亚洲国产韩国一区二区| 国产免费人人看大香伊| 特级精品毛片免费观看| 日韩色视频一区二区三区亚洲 | 欧洲人成在线免费|