JDBC事务
事务:
要么都成功
要么都失败
ACID标准:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
开启事务 setAutoCommit(false);
事务提交 commit();
事务回滚 rooback();
关闭事务
start transaction ;#开启事务
update account set money = money-100 where name = ‘A‘;
update account set money = money+100 where name = ‘B‘;
rollback;#事务回滚
commit; #提交事务
public class TestTransaction {
@Test
public void test(){
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
// 获取数据库连接
conn = jdbcUtils.getConnection();
// 通知数据库开启事务,false 开启
conn.setAutoCommit(false);
// 编辑SQL语句
String sql1 = "update account set money = money-100 where name = ‘A‘;";
// 预编译第一条SQL 执行
conn.prepareStatement(sql1).executeUpdate();
// 制造错误
int i=1/0;
// 第二条 sql
String sql2 = "update account set money = money+100 where name = ‘B‘;";
// 预编译第二条SQL语句
conn.prepareStatement(sql2).executeUpdate();
// 以上两条SQL语句都执行曾公,就提交事务
conn.commit();
System.out.println("success");
} catch (Exception e) {
try{
// 如果出现异常,就通知数据库回滚事务
conn.rollback();
}catch (SQLException throwables){
throwables.printStackTrace();
}
e.printStackTrace();
}finally {
// 释放连接
jdbcUtils.release(conn,pst,null);
}
}
}