1. 程式人生 > >JDBC--獲得ResultSet的記錄個數、欄位個數(轉載)

JDBC--獲得ResultSet的記錄個數、欄位個數(轉載)

1.獲得ResultSet的記錄個數

因為ResultSet沒有方法可直接得到記錄數,只有另想方法,可採用如下方法:

    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    ResultSet rs = stmt.executeQuery(sql);
    rs.last();//移到最後一行
    int count = rs.getRow();
    rs.beforeFirst();//移到初始位置

注意:
因為預設的 ResultSet 物件僅有一個向前移動的游標,必須將ResultSet指定為可滾動的。所以第一行程式碼是必須的,否則會報如下錯誤:
ResultSet may only be accessed in a forward direction

conn連線物件的createStatement(int resultSetType, int resultSetConcurrency);
方法中,引數一為結果集型別,可取值為

1)ResultSet.TYPE_FORWORD_ONLY,結果集只可向前滾動;
2)ResultSet.TYPE_SCROLL_INSENSITIVE,雙向滾動,但不及時更新,就是如果資料庫裡的資料修改過,並不在ResultSet中反應出來。
3)ResultSet.TYPE_SCROLL_SENSITIVE,雙向滾動,並及時跟蹤資料庫的更新,以便更改ResultSet中的資料。

引數二為結果集可進行的操作,可取值為:

1)ResultSet.CONCUR_READ_ONLY 只讀
2)ResultSet.CONCUR_UPDATABLE 可修改

2.獲得ResultSet的欄位個數

使用rs.getMetaData()方法,該方法的返回型別是ResultSetMetaData,在這個類中呼叫getColumnCount()方法,即可得到欄位個數。
程式碼如下:

ResultSetMetaData   rsmd1 = rs.getMetaData();
int count = rsmd1.getColumnCount();

也可以直接這樣獲取:

rs.getMetaData().getColumnCount
();