<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://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
    不用連接池啊
    為何你認為是不好的做法?  回復  更多評論
      

    主站蜘蛛池模板: 91精品免费不卡在线观看| 亚洲免费视频观看| 久久久久亚洲AV成人网人人软件| 亚洲国产aⅴ成人精品无吗| 手机在线看永久av片免费| 久久精品国产亚洲AV蜜臀色欲| 亚洲精品网站在线观看你懂的| 一级人做人a爰免费视频| 免费中文字幕一级毛片| 国产精品亚洲专区在线播放| 四虎永久免费影院在线| 免费大片黄在线观看| 亚洲AⅤ无码一区二区三区在线| 黄页网站在线免费观看| 亚洲精品国产va在线观看蜜芽| 成在线人直播免费视频| 国产亚洲成人在线播放va| 天堂在线免费观看| 亚洲国产第一页www| 三年片在线观看免费观看大全一| 久久久婷婷五月亚洲97号色| 亚洲三级在线免费观看| 亚洲人成77777在线观看网| 热99re久久免费视精品频软件| 久久亚洲AV成人无码国产最大| 夜色阁亚洲一区二区三区| 亚洲高清免费视频| 日韩一级视频免费观看| 免费看黄网站在线看| 亚洲女同成av人片在线观看 | 亚洲无码在线播放| 久久永久免费人妻精品| 亚洲精品在线不卡| 四虎成人免费影院网址| 免费在线观看亚洲| 亚洲深深色噜噜狠狠爱网站| 毛片无码免费无码播放| 亚洲日本国产综合高清| yellow视频免费在线观看| 亚洲精品视频久久久| 另类免费视频一区二区在线观看|