1.可滾動的結果集
Statement s = conn.createStatement(type,concurrency);
type:
1.TYPE_FORWARD_ONLY 結果集不能滾動
2.TYPE_SCROLL_INSENSITIVE 結果集可以滾動,但對數據庫變化不敏感,也就是說即使數據庫數據被更新了,也不反應在這個結果集上。
3.TYPE_SCROLL_SENSITIVE 結果集可以滾動,但對數據庫變化敏感,反映在這個結果集上。
Concurrency:
1.CONCUR_READ_ONLY 結果集不能用於更新數據庫
2.CONCUR_UPDATABLE 結果集可以用於更新數據庫
2. 可更新的結果集
Statement s = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
這樣excuteQuery方法返回的結果集就將是可更新的結果集,但是,不是所有的查詢都返回可更新的結果集。假如返回的是多個表的連接操作,那麼產生的結果集將是不可更新的。ResultSet類中的getConcurrency方法來確定結果集是否可更新的。
例子如下:
String query = "select * from zhao";
ResultSet rs = statement.executeQuery(query);
while(rs.next())
{
double price = rs.getDouble("price");
rs.updateDouble("price",price+1);
rs.updateRow();//就是把更新的數據發送到數據庫
}
可以調用這個方法,取消對當前行的更新,cancelRowUpdates();
如果要插入一行數據,則如下
rs.moveToInsertRow();
rs.updateString(....);
....//若干個updateXXX();
rs.insertRow();
rs.moveToCurrentRow();
rs.deleteRow();//來刪除當前指向的行!這個方法立即把該行和數據庫上的那條行刪除掉!