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