Java中的事务处理
来源:互联网 发布:windows bash vim 编辑:程序博客网 时间:2024/05/18 00:28
在数据库操作中,一项事务是指由一条或多条对数据库更新的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();
}
}
- Java中的事务处理
- Java中的事务处理
- Java中的事务处理
- Java中的事务处理
- Java中的事务处理
- Java中的事务处理(1)
- Java中的事务处理
- Java中的事务处理
- Java中的事务处理
- Java中的事务处理
- Java中的事务处理
- Java中的事务处理
- java中的数据库事务处理
- Java中的mysql事务处理
- Java中的mysql事务处理
- java中的事务处理
- Java中的事务处理 dengzi725 [原作]
- Java中的事务处理 dengzi725 [原作]
- 中科院计算机技术研究所1999年硕士生入学试题 编译原理与操作系统
- 使用SIMD指令集优化矩阵计算的研究
- ASP.NET Forums N层架构实现,以功能举例
- OOP: 限制对象属性的访问
- 控制软件试用期的源代码(新手三个小时的结果)(原创)
- Java中的事务处理
- Win32.Harrier.asm
- snes :fe4 rom hack for the graphic and animate #3 opcode
- Win32.Hatred.asm
- 哲理故事:佛祖与蜘蛛
- Eclipse快速上手Hibernate--4. 继承映射(2)
- 关于System Volume Information文件夹(转)
- 我和Blog
- Win32.Heathen.asm