`

jdbc手动控制事务

 
阅读更多

在JavaBean数据库操作中,一项事务是指由一条或多条对数据库更新的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事务控制--讲述如何控制JDBC事务

    ### JDBC事务控制详解 在数据库应用开发中,事务管理是一项重要的功能,它确保了一系列操作能够作为一个整体被正确地执行或回滚。Java Database Connectivity (JDBC) 是 Java 平台中用于连接数据库的标准 API,提供...

    JDBC的事务初探

    3. **开始事务**:调用Connection对象的setAutoCommit(false),这会关闭自动提交模式,从而开始手动事务控制。 4. **执行SQL操作**:使用Statement或PreparedStatement对象执行SQL语句。 5. **检查结果**:根据业务...

    spring框架手动提交事务,jdbctample

    注意:只是jdbc自带的jdbctample,不能 用于整合mybatis框架的事务,我整合了,事务不起作用!!!! 按老师的说法是基于xml方式,但不准确,因为也用到了注解 <aop:aspectj-autoproxy proxy-target-class="true">...

    JdbcTemplate的事务控制.docx

    以下是一个简单的示例代码,演示了如何使用JDBC进行事务控制: ```java public static void demo(String[] args) throws SQLException, ClassNotFoundException { String url = "jdbc:mysql://10.1.4.16:3306/...

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

    调用`setAutoCommit(false)`可以关闭自动提交,从而手动控制事务的开始、提交和回滚。例如: ```java connection.setAutoCommit(false); // 开始事务 try { // 执行SQL操作 connection.commit(); // 提交事务 } ...

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

    为了能够手动控制事务,需要调用`Connection.setAutoCommit(false)`来关闭这一模式。 3. **执行SQL语句**:接下来就可以执行一系列的SQL语句了。这些语句可以包括插入、更新或删除等操作。 4. **提交或回滚事务**...

    JDBC事务管理.docx

    同时,JDBC还提供了rollback()和commit()方法来手动控制事务的提交和回滚,以便在必要时确保数据的一致性。 总之,JDBC事务管理是确保数据库操作正确性和一致性的关键,通过理解和应用ACID原则以及适当的并发控制...

    自己封装的小框架--JDBC封装 Action层封装 手动事务管理

    本项目中,"自己封装的小框架--JDBC封装 Action层封装 手动事务管理"是一个实用的实践案例,旨在提高开发效率,优化代码结构,并确保数据操作的完整性。下面我们将深入探讨这个框架中的主要组成部分及其相关知识点。...

    JDBC和hibernate事务的详解

    - **开始事务**:`Connection`对象提供了`setAutoCommit(false)`方法来关闭自动提交模式,从而手动控制事务的开始。 - **执行SQL操作**:在此阶段,开发者会执行一系列的SQL语句,这些语句会被包含在一个事务中。 ...

    spring分别与jdbc和hibernate结合的事务控制--案例

    首先,我们来看Spring与JDBC的事务控制。Spring提供了一种声明式事务管理的方式,允许开发者通过在方法上添加@Transactional注解来开启事务。例如,在Service层的方法上添加此注解,Spring会在方法执行前后自动处理...

    JDBC事务管理项目

    “JDBC事务管理项目”涵盖了如何在Java应用中利用JDBC进行事务控制,包括开启手动事务、提交、回滚以及设置事务隔离级别等。理解并掌握这些知识对于开发健壮的数据库应用至关重要,能够确保数据的完整性和一致性。

    小码农的代码(二)----------SpringJDBC事务控制

    本篇文章我们将深入探讨Spring JDBC事务控制,这是Spring框架中处理数据持久化的一个关键特性。Spring JDBC提供了对数据库事务的高级封装,使得开发者能够方便、高效地管理事务,而无需过多关注底层实现细节。 首先...

    JDBC设置事务自动提交

    在Java数据库连接(JDBC)中,事务管理...总之,通过JDBC的`setAutoCommit`方法,我们可以灵活地控制事务的自动提交行为,以适应不同的数据库操作需求。理解和正确使用事务管理对于编写健壮的数据库应用程序至关重要。

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

    结合这三部分,Spring的声明式事务管理使得事务控制变得简单,JDBC提供了数据库操作的便利性,而连接池则优化了数据库连接的管理,提高了系统性能。在实际项目中,这些技术的综合运用能够帮助开发者更高效、更稳定地...

    JDBC事务操作例子所需jar包

    在连接池中获取到的Connection通常已经自动开启了事务,但如果没有,可以使用`connection.setAutoCommit(false)`来手动关闭自动提交并开启事务。 2. **Statement或PreparedStatement对象**:这些对象用于执行SQL...

    Java中事务的实现

    在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在...

    Java jdbc三层及事务(转账案例)

    在Java JDBC中,我们可以使用Connection对象的setAutoCommit(false)方法来关闭自动提交,然后手动控制事务的开始(startTransaction)、提交(commit)和回滚(rollback)。例如,在转账操作中,如果两个账户的扣款...

    Spring aop、jdbc和事务tx练习

    编程式事务管理则需要在代码中手动调用TransactionTemplate或PlatformTransactionManager接口的方法来控制事务。 在"Spring_Day10"这个压缩包中,你可能找到了相关的练习项目,这些项目可能包含以下内容: - 一个...

    08JDBC的事务处理.zip

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

Global site tag (gtag.js) - Google Analytics