Java中事務的提交與回滾
阿新 • • 發佈:2019-01-04
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.Statement;
- public class RollBack_test {
- /**
- * @param args
- */
- public static void main(String[] args) {
- Connection conn = null;
- Statement stmt = null;
- try {
- // 動態匯入資料庫的驅動
- Class.forName("com.mysql.jdbc.Driver");
- // 獲取資料庫連結
- conn = DriverManager.getConnection(
- "jdbc:mysql://localhost:3306/employee", "root", "wang314159");
- // 開啟事務
- //不把其設定為true之前都是一個當作一個事務來處理
- conn.setAutoCommit( false );
- // 創造SQL語句
- String sql = "INSERT INTO myrollback ( name,age,address,school ) VALUES ( 'test', 22,'大立即','hdu' )";
- String sql2 = "INSERT INTO myrollback ( name,age,address,school ) VALUES ( 'test_Name', '33','大立即','hdu' ,'test')";
- // 執行SQL語句
- stmt = conn.createStatement();
- stmt.executeUpdate(sql);
- stmt.executeUpdate(sql2);
- // 提交事務
- conn.commit();
- System.out.println( "OK!" );
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("有錯誤!");
- try {
- // 回滾事務
- //撤銷上面對事務的所有操作哈!
- conn.rollback();
- } catch ( Exception e2 ) {}
- } finally {
- // 關閉Statement
- try {
- stmt.close();
- } catch (Exception e) {}
- // 關閉Connection
- try {
- conn.close();
- } catch (Exception e) {}
- }
- }
- }