程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 如何取得ResultSet的行數

如何取得ResultSet的行數

編輯:關於JAVA

如果你想的取得一個結果集的行數,怎麼辦?

在ResultSet對象裡面,我們找不到取得結果行數的辦法。

其實我們通常的解決方法無非有一下幾種:

[1]

Connection con=....
Statement stmt = con.createStatement();

String sqlStr = "count(*) as total ";
ResultSet rst = stmt.executeQuery(sqlStr);

rst.next();
int total =  rst.getInt("total");

缺點:如果想要遍歷結果集,你不得不在執行一次查詢,取得結果集。

[2]

String accQrySql = "select * from accounts";
Connection con = DBUtils.getConnection();
Statement stmt = con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

ResultSet rst = stmt.executeQuery(accQrySql);

你可以通過下面的方法來取得結果集的記錄數目

rst.last();
int total = rst.getRow();

這時,你可以取得記錄數目。

如果

while(rst.next()){
........
}

int total = rst.getRow();

你將得到的total是0

因為,getRow是在遍歷結果集的時候的指針,也是在結果集內移動的指針,也就是說 ,指向了當前的記錄索引號,所以,在進行結果集的遍歷前和後都被重置成0。

所以,想取得記錄的條數,可以把指針移到最後一條記錄,然後取得當前記錄的編號 就是記錄的條數。

所以,必須用

rst.last();

之後才能用 rst.getRow()來取得,才能取到值。

注意:想要用這種方法來取得結果集的行數,必須用 可滾動結果集

Statement stmt = con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

否則,你就不能執行

rst.last()

也就不能取得結果集的條數。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved