日期:2014-05-16  浏览次数:20503 次

传智播客李勇Jdbc视频笔记--事务(转载)

原文链接:http://longdechuanren.iteye.com/blog/632403

?

1、事务的概念与JDBC事务处理
(1)原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。
(2)一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变)。
(3)隔离性(isolcation):一个事务处理对另一个事务处理没有影响。
(4)持续性(durability):事务处理的效果能够被永久保存下来 。
举例:银行转账
connection.setAutoCommit(false);//打开事务。
.....
....把进行转账的两步操作放在同一个事务中,如果一个出现异常,马上回滚
.....
connection.commit();//提交事务。
connection.rollback();//回滚事务。

2、事务的保存点处理:定义保存点可以用来回滚一部分内容

Java代码 复制代码?收藏代码
  1. static?void?test()?throws?SQLException?{ ??
  2. ????????Connection?conn?=?null; ??
  3. ????????Statement?st?=?null; ??
  4. ????????ResultSet?rs?=?null; ??
  5. ????????//定义保存点 ??
  6. ????????Savepoint?sp?=?null; ??
  7. ????????try?{ ??
  8. ????????????conn?=?JdbcUtils.getConnection(); ??
  9. ????????????conn.setAutoCommit(false);?????????? ??
  10. ????????????st?=?conn.createStatement(); ??
  11. ????????????//修改张三的money值 ??
  12. ????????????String?sql?=?"update?user?set?money=money-10?where?id=1"; ??
  13. ????????????st.executeUpdate(sql); ??
  14. ????????????//设置保存点 ??
  15. ????????????sp?=?conn.setSavepoint(); ??
  16. ???????????? ??
  17. ????????????//修改王五的money值 ??
  18. ????????????sql?=?"update?user?set?money=money-10?where?id=3"; ??
  19. ????????????st.executeUpdate(sql); ??
  20. ??
  21. ????????????sql?=?"select?money?from?user?where?id=2"; ??
  22. ????????????rs?=?st.executeQuery(sql); ??
  23. ????????????float?money?=?