查詢 JDBC result set 資料總筆數
2008 年 三月 31 日 (星期一) 5:54 pm分類:電腦
標籤: programming, database, Java
用 JDBC 下達 SQL 查詢指令,取得 ResultSet 之後,有時我們會想先知道合乎查詢條件的 record 總筆數,再去撈取真正的資料。
原本以為透過 getFetchSize() 可以取得這個數字,但是剛剛 debug 時才發現,原來它傳回的並不是「合乎查詢條件的 record 總筆數」,而是一種類似「record buffer 容量」的數字。
如果真的要取得 result set 的 record 總筆數,可視情況需要,採用以下其中一種方法:
- 先以 “
SELECT COUNT(*)…” 查詢總筆數,再以正常的 SQL 指令取得 ResultSet。但要注意兩階段之間資料會不會有異動。 - 取得 ResultSet 之後,以迴圈累計資料個數:
int count = 0;
while (rs.next()) {
++count;
//…
} - 取得 scrollable 的 ResultSet 之後,將游標移到最後一筆資料:
int count;
if (rs.last())
count = rs.getRow();
else
count = 0;
rs.beforeFirst(); // 或 rs.first();
參考資料
- ResultSet.getFetchSize() & setFetchSize(int)
- jGuru: What does setFetchSize() really do?


追蹤留言回應:以
引用通告 (trackback):![[add to funP]](http://william.cswiz.org/blog/wp-content/themes/william/images/add-funp.png)
![[add to HEMiDEMi]](http://www.hemidemi.com/sticker/user/roxytom.bluecircus.net.gif)
![[add to udn bookmark]](http://bookmark.udn.com/html/help/80_20_02.gif)
