今日總結:JDBC--ResultSet中的滾動和更新
阿新 • • 發佈:2022-04-06
對於preparedstatement 的格式,如下:
PreparedStatement pstmt = conn.prepareStatement(sql, ResultType,ResultSetConcurrency);
ResultType
ResultSet用來定位行的方法有,next(), last(), absolute(), previous(), afterLast()等等。
支援absolute(), previous(), afterLast()等方法的結果集,稱為可滾動結果集。
ResultSetType支援三種取值,
- ResultSet.TYPE_FORWARD_ONLY, 只能向前移動(JDK1.4以前的預設值)
- ResultSet.TYPE_SCROLL_INSENSITIVE, 可滾動,但是底層資料的改變不會影響結果集
- ResultSet.TYPE_SCROLL_SENSITIVE, 可滾動,底層資料的改變會影響結果集
ResultSet.type2
resultSetConcurrency有兩種取值
- ResultSet.CONCUR_READ_ONLY,只讀的併發模式(預設)
- ResultSet.CONCUR_UPDATABLE,可更新的併發模式
另外,可更新的結果集還需要滿足兩個條件,
- 所有資料都來自一個表;
- 選出的資料集必須包含主鍵列
要通過結果集更新資料庫,只需要呼叫ResultSet物件的updateXxx(index, value)方法修改和updateRow()方法提交即可
如
for (int i = rowCount; i > 0 ; i--) { rs.absolute(i);
System.out.println("列印第 "+i+" 行: "+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)); //修改當前行,第2列和第3列的值
rs.updateString(2, "學生名"+i); rs.updateString(3, "學生名"+(i+1));
//提交修改 rs.updateRow();
}