Java中的事务处理

原创 2004年07月08日 09:34:00

在数据库操作中,一项事务是指由一条或多条对数据库更新的sql语句所组成的一个不可分割的工作单元。只有当事务中的所有操作都正常完成了,整个事务才能被提交到数据库,如果有一项操作没有完成,就必须撤消整个事务。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 

例如在银行的转帐事务中,假定张三从自己的帐号上把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中高阶知识精讲

-
  • 1970年01月01日 08:00

java事务处理全解析

最近学习java事务,看到一位前辈的系列博客不错,转载过来作为记录 转载地址:http://www.davenkin.me/post/2013-02-16/40048284001    (一)Ja...
  • huilangeliuxin
  • huilangeliuxin
  • 2015-02-03 10:26:15
  • 58319

详解Java的MyBatis框架中的事务处理

转载来源:http://www.jb51.net/article/85622.htm 一、MyBatis单独使用时,使用SqlSession来处理事务: ? ...
  • rentian1
  • rentian1
  • 2017-08-19 20:59:44
  • 225

Java事务处理详细介绍

  • 2010年12月26日 17:07
  • 30KB
  • 下载

spring事务处理详解

1:Java包含两种异常:checked异常和unchecked异常。checked和unchecked异常之间的区别是: Checked异常必须被显式地捕获try-catch-finally,而u...
  • u013628152
  • u013628152
  • 2015-08-25 18:02:39
  • 4254

Spring框架内容整理(四):Spring事务处理

Spring事务处理,TransactionManager,编程式事务,声明式事务
  • Scplove
  • Scplove
  • 2016-08-22 19:18:04
  • 6160

MyBatis框架中的事务处理

利用MyBatis框架的配置管理比直接使用JDBC API编写事务控制要来得更加轻松,这里我们就来详解Java的MyBatis框架中的事务处理,尤其是和Spring框架集成后更加excitin ...
  • hanshangzhi
  • hanshangzhi
  • 2017-05-21 11:38:03
  • 135

Oracle事务处理

oracle事务处理 什么是事务? 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。 如:网上转账就是典型的要用事务来处理,用以保证数据的一致...
  • q547550831
  • q547550831
  • 2015-11-22 17:44:12
  • 10510

Java事务管理工具类

package com.thit.timdm.helper;import java.sql.Connection; import java.sql.SQLException;/** * 事务管理 工...
  • qq_36144258
  • qq_36144258
  • 2017-12-02 16:19:59
  • 71

在java代码中使用Oracle数据库的事务处理机制

//使用java代码操作oracle数据库的代码如下: package Transaction; import java.sql.Connection; import java.sql.Driv...
  • MyCodeDream
  • MyCodeDream
  • 2015-08-26 14:14:29
  • 1393
收藏助手
不良信息举报
您举报文章:Java中的事务处理
举报原因:
原因补充:

(最多只允许输入30个字)