事务:
要么都成功
要么都失败
ACID标准:
开启事务 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); } } }