JDBC--獲得ResultSet的記錄個數、欄位個數(轉載)
阿新 • • 發佈:2019-01-03
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 ();