在数据库操作中,一项事务是指由一条或多条对数据库更新的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();
}
}
//一定要注意JDBC事务控制的局限性在一个数据库连接内。
资料来源:学网(www.xue5.com),原文地址:http://www.xue5.com/itedu/200707/133708.html
分享到:
相关推荐
java分布式事务demo
Java事务处理Java事务处理.docJava事务处理.doc
java事务设计策略
使用注解控制java事务, 类似spring处理,代码干净简洁
java事务处理总结,让你正确的去理解java中事务的规范
一个朋友要的,非常简单的java事务的处理代码.适合初学者看看!我已经写了注释了.
Java事务设计策略 Mark Richards 编著 翟静 翻译 InfoQ软件开发丛书
java事务处理的三种方式 spring核心功能理解
自己整理的java事务分享知识点,在公司技术分享会上与同事们探讨学习。与各位相互学习,共同进步,谢谢大家。
从介绍事务,到不同事务的区分
事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。 使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务...
java代码-使用java解决数据库事务处理的源代码 ——学习参考资料:仅用于个人学习使用!
在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在...
JDBC事务处理的作用对象为Connection, 因此要想控制操作在同一个事务里面, 我们必须要传递Connection, 确保使用的是同一个Connection.
1.本地事务+动态数据源+单sessionFactory 2.全局事务+动态数据源+单sessionFactory 3.全局事务+多sessionFactory
本文档介绍Spring框架,每个组件的功能介绍,spring事务的管理方式和Java中事务的管理方式比较。
Java事务处理总结[归类].pdf
Template模板设计模式改造threadlocal控制事务
使用动态代理控制事务,代码更加简洁、清爽
Java事务设计策略 pdf,这本书的内容梗概:总体介绍、本地事务模型、编程式事务模型、声明式事务模型、事务设计模式、客户端所有者的事务设计模式、领域服务器与委托所有者的事务设计模式,另有全文总结。