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

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

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

1.
ResultSet rs = st.executeQuery("SELECT COUNT(*) from TestTable");
rs.next();
int count = rs.getInt(1); //get total rows;
但要注意兩階段之間資料會不會有異動。

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(); //回到第一個ResultSet
創作者介紹

愛無所不在

iamferrari 發表在 痞客邦 PIXNET 留言(0) 人氣()