Java JDBC 中獲取 ResultSet 的大小


當我們執行完一條Sql語句,獲取到一個 ResultSet 對象后,有時我們需要立即知道到底返回了多少個元素,但是 ResultSet 並沒有提供一個 size() 方法 or length 的屬性,我們可以一個一個調用 next() 去累加計算,但是我們還有更好的辦法 :

 

PreparedStatement statement = ......;

ResultSet results = statement.executeQuery();

// 將游標移動到最后一行上

results.last(); 

// 得到當前的 row number,在 JDBC 中,row number 從1開始,所以這里就相當於行數

int rowCount = results.getRow();

//此時游標執行了最后一行,如果我們后面還想從頭開始調用 next()遍歷整個結果集,我們可以將游標移動到第一行前面

results.beoreFirst();

// 通過上述這步操作,我們算是回復了結果集到初始狀態(即剛查詢出來的狀態)

 

注意 :上述這一系列移動游標的操作是有前提的,我們的結果集必須是 scrollable(可滾動的) !這個是由 statement 對象決定,我們在創建 statement 對象可以指定如下參數 :

 

conn = getConnection();
statement = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

通過上述 statement 獲取的 ResultSet 就是可以滾動的,如果我們只是 conn.prepareStatement(sql) 來獲取的 statement 對象,是不可以滾動的(只可以調用 next() 向前遍歷),調用任何上述移動游標的方法,都會拋出 SQLException .

 

ResultSet 還為我們定義了如下常量 :

ResultSet.TYPE_FORWARD_ONLY只能向前滾動
ResultSet.TYPE_SCROLL_INSENSITIVE和Result.TYPE_SCROLL_SENSITIVE這兩個方法都能夠實現任意的前后滾動,使用各種移動的ResultSet指針的方法。

 

 


————————————————
版權聲明:本文為CSDN博主「DrifterJ」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/drifterj/article/details/17720271


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM