查詢 JDBC result set 資料總筆數

2008 年 三月 31 日 (星期一) 5:54 pm
分類:電腦
標籤:, ,

用 JDBC 下達 SQL 查詢指令,取得 ResultSet 之後,有時我們會想先知道合乎查詢條件的 record 總筆數,再去撈取真正的資料。

原本以為透過 getFetchSize() 可以取得這個數字,但是剛剛 debug 時才發現,原來它傳回的並不是「合乎查詢條件的 record 總筆數」,而是一種類似「record buffer 容量」的數字。

如果真的要取得 result set 的 record 總筆數,可視情況需要,採用以下其中一種方法:

  1. 先以 “SELECT COUNT(*) …” 查詢總筆數,再以正常的 SQL 指令取得 ResultSet。但要注意兩階段之間資料會不會有異動。
  2. 取得 ResultSet 之後,以迴圈累計資料個數:

    int count = 0;
    while (rs.next()) {
       ++count;
       //…
    }

  3. 取得 scrollable 的 ResultSet 之後,將游標移到最後一筆資料:

    int count;
    if (rs.last())
       count = rs.getRow();
    else
       count = 0;
    rs.beforeFirst(); // 或 rs.first();

參考資料


◤建議您一併閱讀以下文章:

留言回應

[檢核碼]  


Allowed XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

本站已啟用 spam 防護機制。為避免系統誤判,請在按下按鈕之前,先備份您的留言,以防不測。如果您一直無法順利留言,請改用 email 方式。
此外,如果您想留的言與本篇文章及討論串無關,也請轉而點選這裡。謝謝您!