[Java] JDBC 06 批Transaction处理 -- conn.setAutoCommit(false); // 不让其自动提交 (很重要的知识点)

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:SXT", "scott", "tiger");

            conn.setAutoCommit(false); // 不让其自动提交
            stmt = conn.createStatement();
            stmt.addBatch("insert into dept2 values (51, '500', 'haha')");
            stmt.addBatch("insert into dept2 values (52, '500', 'haha')");
            stmt.addBatch("insert into dept2 values (53, '500', 'haha')");
            stmt.executeBatch();
            conn.commit();
            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();
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

}

posted @ 2013-12-20 21:45  小尼人00  阅读(285)  评论(0编辑  收藏  举报