1. 程式人生 > >Java中事務的提交與回滾

Java中事務的提交與回滾

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.Statement;
  4. public class RollBack_test {
  5.     /**
  6.      * @param args
  7.      */
  8.     public static void main(String[] args) {
  9.        Connection conn = null;
  10.        Statement stmt = null;
  11.        try {
  12.            // 動態匯入資料庫的驅動
  13.            Class.forName("com.mysql.jdbc.Driver");
  14.            // 獲取資料庫連結
  15.            conn = DriverManager.getConnection(
  16.                   "jdbc:mysql://localhost:3306/employee", "root", "wang314159");
  17.            // 開啟事務
  18.            //不把其設定為true之前都是一個當作一個事務來處理
  19.            conn.setAutoCommit( false );
  20.            // 創造SQL語句
  21.            String sql = "INSERT INTO myrollback ( name,age,address,school ) VALUES ( 'test', 22,'大立即','hdu' )";
  22.            String sql2 = "INSERT INTO myrollback ( name,age,address,school ) VALUES ( 'test_Name', '33','大立即','hdu' ,'test')";
  23.            // 執行SQL語句
  24.            stmt = conn.createStatement();
  25.            stmt.executeUpdate(sql);
  26.            stmt.executeUpdate(sql2);
  27.            // 提交事務
  28.            conn.commit();
  29.            System.out.println( "OK!" );
  30.        } catch (Exception e) {
  31.            e.printStackTrace();
  32.            System.out.println("有錯誤!");
  33.            try {
  34.           // 回滾事務
  35.           //撤銷上面對事務的所有操作哈!
  36.               conn.rollback();
  37.            } catch ( Exception e2 ) {}
  38.        } finally {
  39.            // 關閉Statement
  40.            try {
  41.               stmt.close();
  42.            } catch (Exception e) {}
  43.            // 關閉Connection
  44.            try {
  45.               conn.close();
  46.            } catch (Exception e) {}
  47.        }
  48.     }
  49. }