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