要麼都成功,要麼都失敗!
ACID原則:保證資料的安全。
開啟事務
事務提交
事務回滾
關閉事務
轉賬:
A:1000
B:1000
A(900)--100-->B(1100)
public class TestJDBC2 {
@Test
public void test() {
// 配置資訊
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
String username = "root";
String password = "123456";
Connection connection = null;
// 1.載入驅動
try {
Class.forName("com.mysql.jdbc.Driver");
// 2.連線資料庫 代表資料庫
connection = DriverManager.getConnection(url, username, password);
// 3.通知資料庫開啟事務
connection.setAutoCommit(false); //false是開啟
String sql = "update account set money = money-100 where name = 'A'";
connection.prepareStatement(sql).executeUpdate();
//製造錯誤
int i = 1/0;
String sql2 = "update account set money = money+100 where name = 'B'";
connection.prepareStatement(sql2).executeUpdate();
connection.commit();
System.out.println("提交成功");
}catch (Exception e){
try {
//如果出現異常 就通知資料庫回滾事務
if (connection != null) {
connection.rollback();
}
}catch (SQLException e1){
e1.printStackTrace();
}
e.printStackTrace();
}finally {
try {
connection.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}