1. 程式人生 > >如何獲取ResultSet記錄行數

如何獲取ResultSet記錄行數

java獲取資料行數的程式碼如下:

Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet rs = stmt.executeQuery(sql);

rs.last();

int length = rs.getRow();

length的值就是行數了。如果在獲取了行數後,還需要繼續使用當前資料集rs,則需要執行rs.beforeFirst();將遊標回到初始位置。

Statement建立的通用格式為:
Statement stmt=con.createStatement(int type,int concurrency);

引數的說明:

引數 int type

ResultSet.TYPE_FORWORD_ONLY 結果集的遊標只能向下滾動。
ResultSet.TYPE_SCROLL_INSENSITIVE 結果集的遊標可以上下移動,當資料庫變化時,當前結果集不變。
ResultSet.TYPE_SCROLL_SENSITIVE 返回可滾動的結果集,當資料庫變化時,當前結果集同步改變。

引數 int concurrency

ResultSet.CONCUR_READ_ONLY 不能用結果集更新資料庫中的表。
ResultSet.CONCUR_UPDATETABLE 能用結果集更新資料庫中的表。

當使用ResultSet re=stmt.executeQuery(SQL語句)查詢後,可以使用下列方法獲得資訊:

public boolean previous() 將遊標向上移動,該方法返回boolean型資料,當移到結果集第一行之前時,返回false。
public void beforeFirst 將遊標移動到結果集的初始位置,即在第一行之前。
public void afterLast() 將遊標移到結果集最後一行之後。
public void first() 將遊標移到結果集的第一行。
public void last() 將遊標移到結果集的最後一行。
public boolean isAfterLast() 判斷遊標是否在最後一行之後。
public boolean isBeforeFirst() 判斷遊標是否在第一行之前。
public boolean ifFirst() 判斷遊標是否指向結果集的第一行。
public boolean isLast() 判斷遊標是否指向結果集的最後一行。
public int getRow() 得到當前遊標所指向行的行號,行號從1開始,如果結果集沒有行,返回0。
public boolean absolute(int row) 將遊標移到引數row指定的行號。如果row取負值,就是倒數的行數,absolute(-1)表示移到最後一行,absolute(-2)表示移到倒數第2行。當移動到第一行前面或最後一行的後面時,該方法返回false。

getFetchSize

resultset.getFetchSize()

Returns the fetch size for the result set object.

setFetchSize

resultset.setFetchSize(int rows)

Gives the driver an idea of how many rows should be returned from the database when more rows are needed for the result set.

getMetaData

resultset.getMetaData()

Returns a ResultSetMetaData object with the number, type, and properties of the result set's columns.

getRow

resultset.getRow()

Returns an integer containing the current row number.

你如果是這樣定義的:
Statement   statement=con.createStatement();
那麼由此產生的rs只有next()屬性,不支援first(),last()或者是absolute()這些屬性