位置:首頁 > Java技術 > java實例教學 > Java使用保存點和回滾

Java使用保存點和回滾

如何在java中使一個保存點和回滾( Savepoint & Rollback)?

解決方法

下麵的示例使用的連接Rollback方法來回滾到以前保存的保存點

import java.sql.*;

public class jdbcConn {
   public static void main(String[] args) throws Exception{
      Class.forName("org.apache.derby.jdbc.ClientDriver");
      Connection con = DriverManager.getConnection
      ("jdbc:derby://localhost:1527/testDb","name","pass");
      Statement stmt = con.createStatement();
      String query1 = "insert into emp values(5,'name','job')";
      String query2 = "select * from emp";
      con.setAutoCommit(false);
      Savepoint spt1 = con.setSavepoint("svpt1");
      stmt.execute(query1);
      ResultSet rs = stmt.executeQuery(query2);
      int no_of_rows = 0;
      while (rs.next()) {
         no_of_rows++;
      }
      System.out.println("rows before rollback statement = "
      + no_of_rows);
      con.rollback(spt1);
      con.commit();
      no_of_rows = 0;
      rs = stmt.executeQuery(query2);
      while (rs.next()) {
         no_of_rows++;
      }
      System.out.println("rows after rollback statement = "
      + no_of_rows);
   }
}

結果

上麵的代碼示例將產生以下結果。該結果可能會不同。

rows before rollback statement = 4
rows after rollback statement = 3