zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0
          如果你想的取得一個結果集的行數,怎么辦?
          在ResultSet對象里面,我們找不到取得結果行數的辦法。
          其實我們通常的解決方法無非有一下幾種:

          [1]
          Connection con=....
          Statement stmt = con.createStatement();
          ? ?
          ?String sqlStr = "count(*) as total ";
          ?ResultSet rst = stmt.executeQuery(sqlStr);
          ?
          ?rst.next();
          int total =? rst.getInt("total");

          缺點:如果想要遍歷結果集,你不得不在執行一次查詢,取得結果集。

          [2]

          ?? ??? ??? ?String accQrySql = "select * from accounts";
          ?? ??? ??? ?Connection con = DBUtils.getConnection();
          ?? ??? ??? ?Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
          ?? ??? ??? ?
          ?? ???????????????? ResultSet rst = stmt.executeQuery(accQrySql);

          ?????????????????????? 你可以通過下面的方法來取得結果集的記錄數目
          ?????????????????????? rst.last();
          ?????????????????????? int total = rst.getRow();

          ?????????????????????? 這時,你可以取得記錄數目。

          ?????????????????????? 如果
          while(rst.next()){
          ........
          }???? ?

          int total = rst.getRow();
          你將得到的total是0

          因為,getRow是在遍歷結果集的時候的指針,也是在結果集內移動的指針,也就是說,指向了當前的記錄索引號,所以,在進行結果集的遍歷前和后都被重置成0。
          所以,想取得記錄的條數,可以把指針移到最后一條記錄,然后取得當前記錄的編號就是記錄的條數。
          所以,必須用
          rst.last();
          之后才能用 rst.getRow()來取得,才能取到值。

          注意:想要用這種方法來取得結果集的行數,必須用 可滾動結果集???? ?
          ?? ?Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
          否則,你就不能執行
          rst.last()
          也就不能取得結果集的條數。



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2009-06-19 17:25 zhyiwww 閱讀(1968) 評論(2)  編輯  收藏 所屬分類: java basic

          FeedBack:
          # re: 如何取得ResultSet的行數
          2009-06-19 19:00 | 心夢帆影
          有用,學習了,謝謝你的博文!  回復  更多評論
            
          # re: 如何取得ResultSet的行數
          2009-06-21 09:40 | wyq
          Good  回復  更多評論
            
          主站蜘蛛池模板: 嘉定区| 乐陵市| 年辖:市辖区| 宜兰市| 辰溪县| 增城市| 渝中区| 广东省| 昆山市| 高阳县| 城口县| 丹棱县| 彭山县| 东辽县| 天门市| 慈溪市| 家居| 曲麻莱县| 康定县| 奈曼旗| 连州市| 昌平区| 拜城县| 枝江市| 台中市| 怀来县| 清河县| 临江市| 德清县| 玉林市| 罗定市| 张家界市| 会理县| 府谷县| 久治县| 旅游| 广州市| 鄂托克前旗| 日土县| 临澧县| 尉氏县|