Java中的事务处理
关键字: 事务|
在数据库操作中,一项事务是指由一条或多条对数据库更新的 sql 语句所组成的一个不可分割的工作单元。只有当事务中的所有操作都正常完成了,整个事务才能被提交到数据库,如果有一项操作没有完成,就必须撤消整个事务。 例如在银行的转帐事务中,假定张三从自己的帐号上把 1000 元转到李四的帐号上,相关的 sql 语句如下: update account set monery=monery-1000 where name=’zhangsan’ update account set monery=monery+1000 where name=’lisi’ 这个两条语句必须作为一个完成的事务来处理。只有当两条都成功执行了,才能提交这个事务。如果有一句失败,整个事务必须撤消。 在 connection 类中提供了 3 个控制事务的方法: (1) setAutoCommit(Boolean autoCommit): 设置是否自动提交事务; (2) commit(); 提交事务; (3) rollback(); 撤消事务; 在 jdbc api 中,默认的情况为自动提交事务,也就是说,每一条对数据库的更新的 sql 语句代表一项事务,操作成功后,系统自动调用 commit ()来提交,否则将调用 rollback ()来撤消事务。 在 jdbc api 中,可以通过调用 setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的 sql 语句做为一个事务,在所有操作完成之后,调用 commit ()来进行整体提交。倘若其中一项 sql 操作失败,就不会执行 commit ()方法,而是产生相应的 sqlexception ,此时就可以捕获异常代码块中调用 rollback ()方法撤消事务。 Try{ Con = java.sql.DriverManager.getConnection(dburl , dbUser , dbPass); Con.setAutoCommit(false); Stmt = con.createStatement(); Stmt.executeUpdate(“update account set monery=monery-1000 where name=’zhangsan’”); stmt.executeUpdate(“update account set monery=monery+1000 where name=’lisi’”); con.commit(); }catch(Exception ex){ ex.printStackTrace(); try{ con.rollback(); }catch(Exception e){ e.printStackTrace(); } }finally{ try{ stmt.close(); con.close(); }catch(Exception e){ e.printStackTrace(); } } |
发表评论
- 浏览: 1254 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Session的创建时间
Session ID 只是一个号码,对应一个Session存储空间。 浏览器进 ...
-- by buaawhl -
Session的创建时间
如果用了url重写,所有的链接都要用到url重写,非常的麻烦,与其url重写,还 ...
-- by gotothework -
Session的创建时间
不用大惊小怪啊,多看看sun的文档,或者sun的那个第二级的考试指南就有讲的。另 ...
-- by eddie404956 -
关于XMLHttpRequest.open( ...
看到了kimmking的回帖,太感谢了。因为我是初学,只会用穷举法列出所有的可能 ...
-- by holdbelief -
setTimeout调用有返回值的 ...
var retValue = ''; 可以去掉 IE和FF中都通过
-- by kimmking






评论排行榜