玩轉MySQL——事務
阿新 • • 發佈:2018-12-11
事務處理
DELETE FROM stud WHERE id='P006';
START TRANSACTION;
DELETE FROM stud WHERE id='P011';
UPDATE stud SET NAME='abc' WHERE id='P003';
ROLLBACK / COMMIT;
說明:從"START TRANSACTION"開始 到 “ROLLBACK; 或 COMMIT; ”,這中間的那些語句是一個整體,如果執行
“ROLLBACK”,那麼這些動作都會回滾(撤消)。如果執行“COMMIT”,就全部執行成功。
package cn.hncu.pub; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import org.junit.Test; public class DBhello { // 事務處理的Java實現----簡單的模板 @Test public void demo2() throws Exception { // 引數是字串,以後可採用配置檔案的方式讀取,這樣專案的資料庫移植性好! Class.forName("com.mysql.jdbc.Driver"); // DriverManager.registerDriver(new Driver()); // //可以替代上一行,但不好,因為有依賴。若有一天要換資料庫,就要修改這裡Driver的包名---資料庫移植不方便 String url = "jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&characterEncoding=utf-8"; Connection conn = DriverManager.getConnection(url, "root", "5959"); // ////////簡單的事務處理模板---java程式碼////////////// try { conn.setAutoCommit(false); // SQL: START TRANSACTION; Statement st=conn.createStatement(); String sql = "insert into stud values('2001','楊過',24,'武俠') "; st.execute(sql); /*sql = "delete from sstud where sno='1012' "; st.execute(sql);*/ /* sql = "update aa set a='WWW' where a='dddD' "; st.execute(sql);*/ conn.commit(); //SQL: COMMIT System.out.println("事務提交...."); } catch (Exception e) { conn.rollback();// SQL: ROLLBACK System.out.println("事務回滾...."); }finally{ if(conn!=null){ conn.close(); } } } }
結果: