1. package book.database;  
  2.  
  3. import java.sql.Connection;  
  4. import java.sql.ResultSet;  
  5. import java.sql.SQLException;  
  6. import java.sql.Statement;  
  7.  
  8. /**  
  9.  * 本例演示使用ResultSet更新数据库的数据. 包括修改、插入和删除  
  10.  */ 
  11. public class UpdateWithResultSet {  
  12.     /**  
  13.      * 使用ResultSet可以更新数据库的数据,前提是与之相连的Statement没有被关闭。  
  14.      * @param con  
  15.      */ 
  16.     public static void update(Connection con){  
  17.         String sql = "SELECT * FROM student_basic";  
  18.         Statement sm = null;  
  19.         ResultSet rs = null;  
  20.         try {  
  21.             // 创建Statement  
  22.             // ResultSet.TYPE_SCROLL_SENSITIVE表示在ResultSet中可以随心所欲的先前向后移动游标,  
  23.             // 同时ResultSet的值有所改变的时候,它可以得到改变后的最新的值。  
  24.             // ResultSet.CONCUR_UPDATABLE表示在ResultSet中的数据记录可以任意修改,然后更新会数据库  
  25.             sm = con.createStatement(  
  26.                     ResultSet.TYPE_SCROLL_SENSITIVE,  
  27.                     ResultSet.CONCUR_UPDATABLE);  
  28.             rs = sm.executeQuery(sql);  
  29.               
  30.             /***用ResultSet更新第一条数据***/ 
  31.             // 指针移到第一条数据  
  32.             rs.absolute(1);  
  33.             // 修改数据  
  34.             rs.updateDouble("score"70);// 修改score列  
  35.             rs.updateString(5"updated by ResultSet!");// 修改第5列  
  36.             // 如果想取消对当前记录的修改,可以取消  
  37.             rs.cancelRowUpdates();  
  38.             System.out.println("准备用ResultSet修改一条记录!");  
  39.             // 如果决定修改,则使用updateRow方法提交修改  
  40.             rs.absolute(1);// 必须再调用一次absolute,因为,  
  41.             rs.updateDouble("score"70);  
  42.             rs.updateString(5"updated by ResultSet!");  
  43.             // 将修改提交到数据源  
  44.             rs.updateRow();  
  45.             OperateDB.showResultSet(rs);  
  46.               
  47.             /***用ResultSet插入一条数据***/ 
  48.             System.out.println("准备用ResultSet插入一条记录!");  
  49.             // 指针移动到插入点  
  50.             rs.moveToInsertRow();  
  51.             // 为新数据设置值  
  52.             rs.updateString("name""mike");  
  53.             rs.updateInt("age"18);  
  54.             rs.updateDouble("score"88);  
  55.             // 将插入提交到数据源  
  56.             rs.insertRow();  
  57.             OperateDB.showResultSet(rs);  
  58.               
  59.             /***用ResultSet删除一条数据***/ 
  60.             rs.last();  
  61.             System.out.println("准备用ResultSet删除最后一条记录!" );  
  62.             rs.deleteRow();  
  63.             OperateDB.showResultSet(rs);  
  64.               
  65.             rs.close();  
  66.         } catch (SQLException e) {  
  67.             e.printStackTrace();  
  68.         } finally {  
  69.             // 关闭Statement  
  70.             OperateDB.closeStatement(sm);  
  71.         }  
  72.     }  
  73.     public static void main(String[] args) throws ClassNotFoundException,  
  74.             SQLException {  
  75.         String dbName = "studentdb";  
  76.         String userName = "test";  
  77.         String password = "test";  
  78.           
  79.         Connection con = null;  
  80.         try {  
  81.             // 获得数据库连接  
  82.             con = DBConnector.getMySQLConnection(nullnullnull, dbName,  
  83.                     userName, password);  
  84.             // 更新数据库  
  85.             UpdateWithResultSet.update(con);  
  86.         } catch (ClassNotFoundException e1) {  
  87.             throw e1;  
  88.         } catch (SQLException e2) {  
  89.             throw e2;  
  90.         } finally {  
  91.             // 关闭数据库连接  
  92.             OperateDB.closeConnection(con);  
  93.         }  
  94.     }