JavaBean中使用JDBC方式进行事务处理

在数据库操作中,一项事务是指由一条或多条对数据库更新的sql语句所组成的一个不可分割的工作单元。只有当事务中的所有操作都正常完成了,整个事务才能被提交到数据库,如果有一项操作没有完成,就必须撤消整个事务。我们通过提交commit()或是回滚rollback()来结束事务的操作。关于事务操作的方法都位于接口java.sql.Connection中。

在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的, jdbc api中,可以通过调用setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做为一个事务,在所有操作完成之后,调用commit()来进行整体提交。倘若其中一项sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获异常代码块中调用rollback()方法撤消事务。下面是一个例子;

比如:有两张表,一个记录用户帐户(useraccount),一个是系统帐(sysaccount),现在有一个用户要向系统寄钱买东西,就要此行下面两条语句:

String sql1 = "update useraccount set monery=monery-1000 where name='username'";
String sql2 = "update sysaccount set monery=monery+1000 where name='sysname'";

但如果第一条执行了而第二条语句执行出错了就会造成不良后果。这是就可以用手动提交的方式来防止这种事情的发生:主要代码

try{
.
.
.
conn=DriverManager.getConnection("..."); //链接数据库 

conn.setAutoCommit(false);//禁止自动提交事务
stmt = conn.Create....
String sql1 = "update useraccount set monery=monery-1000 where name='usename'";
String sql2 = "update sysaccount set monery=monery+1000 where name='sysname'";
stmt=conn.createStatement();
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);

conn.commit(); //统一提交。

}catch(SQLException e){
conn.rollback(); //倘若其中一项sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获 异常代码块中调用rollback()方法撤消事务。 
e.printStackTrace();
}
finally{
if(stmt!=null){
stmt.close();
}
if(conn!=null){
stmt.close();
}
}

时间: 2024-10-27 16:05:21

JavaBean中使用JDBC方式进行事务处理的相关文章

简介Java中的JDBC技术

JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口).它由一些Java语言编写的类和界面组成.JDBC为数据库应用开发人员.数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序. 一.ODBC到JDBC的发展历程 说到JDBC,很容易让人联想到另一个十分熟悉的字眼"ODBC".它们之间有没有联系呢?如果有,那么它们之间又是怎样的关系呢? ODBC是O

PropertySet教程-3.JDBC方式

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ). PropertySet(来源:http://blog.csdn.net/inkfish) 是由opensymphony组织开发的的一个开源项目,但是那个项目文档少,长时间没有更新,官方文档错误奇多,所以现在在项目中使用并不广泛.但这并 不妨碍PropertySet成为一个优秀的key-value持久化模块,当前,PropertySet可以说已经够用.这里我整理书写了 Proper

spring 注解-spring容器已经配置好数据连接池,类里面用jdbc方式是不是就不管用了

问题描述 spring容器已经配置好数据连接池,类里面用jdbc方式是不是就不管用了 求大肾解答,driud阿里巴巴的数据连接池bean配置在spring容器里面!我在JAVA类中@resource注入,datasource拿到连接!是null!数据库什么链接信息都是对的.求大神解答druid连接池,获取连接的详细代码,不要沉 解决方案 你有没有在JAVA类中写set方法 按理说不写也对啊 解决方案二: spring配置ibatis的jdbc方式和proxool连接池方式 解决方案三: 不要沉啊

java开发中基于JDBC连接数据库实例总结_java

本文实例讲述了java开发中基于JDBC连接数据库的方法.分享给大家供大家参考,具体如下: 创建一个以JDBC连接数据库的程序,包含7个步骤:   1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ;

java 操作sql2000 jdbc方式

问题描述 /**jdbc方式操作数据库**/packagecom.test2;importjava.sql.*;publicclassTest3{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub//PreparedStatement[火箭车]//定义所需要的对象PreparedStatementps=null;Connectionct=null;ResultSetrs=null;try{//初始化我们的对象//1.

border边框属性在浏览器中的渲染方式

分析border边框属性在浏览器中的渲染方式首发小志博客,如果感觉内容还不错而要转载的朋友请不要怜惜 http://blog.linxz.cn/ 这么一个URL,谢谢! 针对border边框属性在浏览器中的渲染方式很早以前就开始在QQ群中看到大家在讨论,而我也一直以border:0 none;的方式处理.其中当然也是有我自己为什么要做的原因,对于这个原因在下面的分析中将会提到.在对border边框属性进行分析之前,需要说明的几点内容是: 小志我并不是一个分析专家,只是借助Firebug和IE d

谈谈JAVA中的调用方式

很多书籍都说Java支持传引用调用的方式,类似于C++中的Person &a引用调用,而近来编程遇到一系列问题让我对此产生了怀疑,于是将这些方法一一列出,我们来一起看看JAVA中的调用方式:   看下面的程序:  class Person {      private String name;//姓名     private String sex;//性别     public Person(String x, String y) {         this.name = x;        

两种方法测试spring中的jdbc

两种方法测试spring中的jdbc  JDBC是一个非常基础的数据存取API,spring对其进行简单的封装,  下面以sqlserver中自带的pubs数据库Authors表进行测试.   1):编写Authors.java,其每个对象对应于数据库中的一条记录   package jdbc;public class Authors {   String  lname=null;   String fname=null;   String phone=null;   String addres

ASP.NET中通过对话框方式下载文件

ASP.NET中通过对话框方式下载文件 1 通过探出对话框提示文件下载或打开 2 通过自定义Header让特定的应用程序打开文件  使用的方法:Response.TransmitFile()  例程: Response.ContentType = "image/jpeg";Response.AppendHeader("Content-Disposition","attachment; filename=SailBig.jpg");Response