JDBC控制事务
文章目录
-
事务:一个事务包含多个步骤的业务操作,如果这个操作被事务管理,则这个多个事务要么同时成功,要么同时失败。
-
操作:
- 开启事务
- 提交事务
- 回滚事务
-
使用Connection对象来管理事务
- 开启事务:setAutoCommit(boolean autoCommit):调用该方法设置数为false,即开启事务
- 提交事务:commit()
- 回滚事务:rollback()
public class jdbcdemo4 { public static void main(String[] args) { Connection conn = null; PreparedStatement pstmt1 = null; PreparedStatement pstmt2 = null; try { //数据库连接 conn = JDBCUtils.getConnection(); //手动开启事务 conn.setAutoCommit(false); //定义sql //2.1zhangsan -500 String sql1 = "update account set balance = balance - ? where id = ?"; //2.2 lisi +500 String sql2 = "update account set balance = balance + ? where id = ?"; //3、获取执行sql对象 pstmt1 = conn.prepareStatement(sql1); pstmt2 = conn.prepareStatement(sql2); //4、设置参数 pstmt1.setDouble(1,500); pstmt1.setInt(2,1); pstmt2.setDouble(1,500); pstmt2.setInt(2,2); //5、执行sql pstmt1.executeUpdate(); //异常制造 // int i =3/0; pstmt2.executeUpdate(); //事务提交 conn.commit(); } catch (SQLException e) { try { if(conn != null) { //事务回滚 conn.rollback(); } } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); }finally { JDBCUtils.close(pstmt1,conn,null); JDBCUtils.close(pstmt2,null,null); } } }
黑马