如果一个事务中一个操作发生错误,则将此事务中所有操作回滚。
实例:
TestTransaction.java:
- import java.sql.*;
- public class TestTransaction {
- public static void main(String[] args) {
- Connection conn = null;
- Statement stmt = null;
- try {
- Class.forName("oracle.jdbc.driver.OracleDriver");
- conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:mgc","system","admin");
- conn.setAutoCommit(false);
- stmt = conn.createStatement();
- stmt.addBatch("Insert INTO member(id,name) VALUES(15,'m15')");
- stmt.addBatch("Insert INTO member(id,name) VALUES(16,'m16')");
- stmt.addBatch("Insert INTO member(id,name) VALUES(17,'m17')");
- stmt.executeBatch();
- conn.setAutoCommit(true);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- try {
- if (conn != null) {
- conn.rollback();
- conn.setAutoCommit(true);
- }
- } catch (SQLException e1) {
- e1.printStackTrace();
- }
- } finally {
- try {
- if (stmt != null) {
- stmt.close();
- stmt = null;
- }
- if (conn != null) {
- conn.close();
- conn = null;
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }