JDBC的事务

演示事务问题:

  1. 建立一张个人账户表
  2. zs与ls进行转账
    1.检查zs账户余额
    2.减少zs账户1000
    3.增加ls账户1000
    示例
    JDBC的事务
  3. 出现异常情况
    在第2步和第3步之间弄一个异常 int a = 1 / 0;
    一个人的账户减少,另一个没有加

处理事务

  1. 默认情况下, 事务是自动提交的,要设置为手动提交

  2. 处理事务过程
    2.1关闭自动提交 conn.setAutoCommit(false);在连接数据库的url后面增加这个参数
    2.2 没有问题时,提交事务 conn.commit();
    2.3出现异常时,进行回滚操作 conn.rollback()
    回滚之后,事务结束,释放资源
    出现异常,没有提交,也不会更新数据库,但是事务会占用资源,所以要出现异常时,进行回滚操作

3.1 只有增、册、改才需要事务,查询不需要事务
3.2以后发现自己写的代码是正确的,测试也成功,但是数据库当中的数据不变,就可能是事务没有提交
注意一下:
1.在引擎方面: InnoDB才支持外键和事务。MyISAM不支持外键和事务
2.(很少用)设置事务的隔离级conn.setTransactionIsolation(Connection.TRANSACTION_REPATABLE_READ)
JDBC的事务