1. 程式人生 > 其它 >今日總結:JDBC--ResultSet中的滾動和更新

今日總結:JDBC--ResultSet中的滾動和更新

對於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();
}