當我們執行完一條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