`
YOUNG918
  • 浏览: 188806 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用JDBC方式进行事务处理

    博客分类:
  • java
阅读更多

在Java数据库操作中,一项事务是指由一条或多条对数据库更新的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();
  }
 }

分享到:
评论

相关推荐

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

    ### JavaBean中使用JDBC方式进行事务处理 #### 一、引言 在现代软件开发过程中,数据一致性是非常关键的一个方面,特别是在涉及到多个数据库操作时。本文将详细介绍如何在JavaBean中利用JDBC(Java Database ...

    java使用jdbc对mysql的操作封装,包括java使用jdbc对mysql进行事务处理

    封装了java使用jdbc对mysql的操作,以及java使用jdbc对mysql的事务处理,对execute、executeUpdate、executeQuery进行了封装,把繁琐的创建数据库连接对象、PreparedStatement对象、结果集对象,打开关闭连接进行了...

    Java(JDBC)事务处理

    Java(JDBC)事务处理

    JDBC的事务初探

    **JDBC事务初探** Java Database Connectivity (JDBC) 是Java平台中用于访问数据库的标准API。在处理数据库操作时,事务管理是确保数据一致性、完整性和持久性的重要机制。本篇将深入探讨JDBC中的事务处理,以及...

    JDBC事务处理机制探秘

    首先,我们来看JavaBean中如何使用JDBC进行事务处理。在JDBC中,默认情况下,每个单独的SQL语句都是在一个自动提交(auto-commit)的事务中执行的,这意味着每执行完一个SQL语句,数据库就会立即提交事务。如果想要...

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.4 JavaBean中使用JDBC方式进行事务处理 1.5 JSP 隐式对象简介 1.6 Java解析XML的四种方法 1.7 struts1和truts2比较 1.8 Tomcat5启动流程与配置详解 1.9 HttpServlet详解 1.10 Ant使用入门 1.11 Maven Ant...

    Sharding-JDBC分布式事务应用

    总之,《Sharding-JDBC分布式事务应用》这篇文档深入探讨了Sharding-JDBC在分布式事务处理中的实现方式和应用场景,对于Java开发者来说,是理解并掌握分布式事务处理技术的重要参考资料。通过学习,开发者能够更好地...

    JDBC事务 JTA事务 传播特性 隔离级别

    在2PC中,事务处理监视器(TPM)先询问所有资源管理器(如数据库)是否准备好提交,然后再决定全局提交或回滚。JTA事务更复杂,但能保证分布式事务的一致性。 最后,我们提到的是**事务的传播特性**,这是Spring...

    sqlserver与java连接接操作

    JavaBean 中使用 JDBC 方式进行事务处理实例: 有一个订单库存管理系统,每一次生成订单的同时我们都要消减库存。通常来说订单和库存在数据库里是分两张表来保存的:订单表,库存表。每一次追加一个订单实际上需要...

    JDBC事务管理的简单实现

    事务模板是指提供模板方法对事务处理的代码进行控制。事务模板可以简化事务管理的代码,提供了统一的事务管理方法。例如,TransactionTemplate类提供了executeTransaction()方法,用于执行事务回调方法。 五、事务...

    spring JDBC事务管理

    标题中的“Spring JDBC事务管理”是指在Spring框架中如何利用JDBC进行数据库操作时的事务控制。Spring提供了多种方式来管理事务,使得开发者能够在复杂的业务逻辑中更好地控制数据的持久化过程,确保数据的一致性和...

    jdbc连接数据库事务工厂模式

    例如,使用Spring框架时,可以利用其AOP(面向切面编程)特性,结合事务管理注解或配置,实现事务的声明式管理,进一步简化事务处理。 综上所述,"jdbc连接数据库事务工厂模式"结合了JDBC的数据库操作、事务管理的...

    jdbc连接各数据库及事务处理

    二、JDBC事务处理 在数据库操作中,事务处理确保一组操作要么全部成功,要么全部失败,保证数据的一致性。在JDBC中,我们可以通过以下方式管理事务: 1. 设置自动提交为false:默认情况下,JDBC的每个数据库操作都...

    08JDBC的事务处理.zip

    总结起来,JDBC的事务处理是数据库操作的关键部分,而Spring的事务管理提供了一种强大、灵活的方式来控制事务,降低了开发复杂性。了解并熟练掌握这些概念和实践,对于构建健壮的、高性能的Java应用程序至关重要。

    JDBC事务操作例子所需jar包

    综上所述,理解JDBC事务处理以及正确使用`mysql-connector-java.jar`对于开发与MySQL数据库交互的Java应用程序至关重要。通过有效的事务管理,我们可以确保数据的完整性和一致性,避免因单个操作失败而导致整个系统...

    JDBC事务管理.docx

    JDBC事务管理是数据库...总之,JDBC事务管理是确保数据库操作正确性和一致性的关键,通过理解和应用ACID原则以及适当的并发控制机制,开发人员可以有效地处理并发环境下的事务处理,保证系统的稳定性和数据的完整性。

    JDBC事务管理项目

    本项目“JDBC事务管理项目”旨在教你如何在Java应用中使用JDBC来处理数据库事务,确保数据的一致性和完整性。 **事务的概念** 事务是数据库操作的基本单元,它包含了对数据库的一系列操作,这些操作要么全部成功,...

    JDBC使用MySQL处理大数据+事务控制管理.txt

    ##### 启用事务处理 在使用事务时,首先需要关闭自动提交模式,然后执行一系列的操作,并在最后通过`commit()`方法显式提交事务。 ```java Class.forName("com.mysql.jdbc.Driver"); Connection conn = ...

    JDBC和hibernate事务的详解

    JDBC事务支持四种隔离级别: 1. **读未提交(READ UNCOMMITTED)**:允许读取未提交的数据,可能导致脏读。 2. **读已提交(READ COMMITTED)**:每次读取的数据都是已经提交的,避免脏读,但可能出现不可重复读。 3...

    spring声明式事务管理+jdbc+连接池.zip

    首先,**Spring声明式事务管理**是Spring框架提供的一种简化事务处理的方法。它允许开发者通过在XML配置文件或使用注解来声明事务边界,而不是在代码中手动管理事务的开始、提交、回滚等操作。声明式事务管理主要有...

Global site tag (gtag.js) - Google Analytics