`
cnjarchen
  • 浏览: 43837 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java jdbc 事务回滚

阅读更多
private Connection conn = null; 
private PreparedStatement ps = null; 
try{ 
    conn.setAutoCommit(false);  //将自动提交设置为false 
    ps.executeUpdate("修改SQL"); //执行修改操作 
    ps.executeQuery("查询SQL");  //执行查询操作                
    conn.commit();      //当两个操作成功后手动提交 
} catch (Exception e) { 
    conn.rollback();    //一旦其中一个操作出错都将回滚,使两个操作都不成功 
    e.printStackTrace(); 
}

JDBC对事务的支持体现在三个方面:
    1.自动提交模式(Auto-commit mode):Connection提供了一个auto-commit的属性来指定事务何时结束。当auto-commit为true时,当每个独立SQL操作的执行完毕,事务立即自动提交,也就是说每个SQL操作都是一个事务。一个独立SQL操作什么时候算执行完毕,JDBC规范是这样规定的:对数据操作语言(DML,如insert,update,delete)和数据定义语言(如create,drop),语句一执行完就视为执行完毕。对select语句,当与它关联的ResultSet对象关闭时,视为执行完毕。对存储过程或其他返回多个结果的语句,当与它关联的所有ResultSet对象全部关闭,所有update count(update,delete等语句操作影响的行数)和output parameter(存储过程的输出参数)都已经获取之后,视为执行完毕。当auto-commit为false时,每个事务都必须显示调用commit方法进行提交,或者显示调用rollback方法进行回滚。auto-commit默认为true。

    2.事务隔离级别(Transaction Isolation Levels):
        a.TRANSACTION_NONE JDBC驱动不支持事务
        b.TRANSACTION_READ_UNCOMMITTED 允许脏读、不可重复读和幻读
        c.TRANSACTION_READ_COMMITTED 禁止脏读,但允许不可重复读和幻读
        d.TRANSACTION_REPEATABLE_READ 禁止脏读和不可重复读,单运行幻读。
        e.TRANSACTION_SERIALIZABLE 禁止脏读、不可重复读和幻读。

    3.保存点(SavePoint):JDBC定义了SavePoint接口,提供在一个更细粒度的事务控制机制。当设置了一个保存点后,可以rollback到该保存点处的状态,而不是rollback整个事务。Connection接口的setSavepoint和releaseSavepoint方法可以设置和释放保存点。

    JDBC规范虽然定义了事务的以上支持行为,但是各个JDBC驱动,数据库厂商对事务的支持程度可能各不相同。如果在程序中任意设置,可能得不到想要的效果。为此,JDBC提供了DatabaseMetaData接口,提供了一系列JDBC特性支持情况的获取方法。比如,通过DatabaseMetaData.supportsTransactionIsolationLevel方法可以判断对事务隔离级别的支持情况,通过DatabaseMetaData.supportsSavepoints方法可以判断对保存点的支持情况。
分享到:
评论

相关推荐

    Spring/SpringMVC/MyBatis整合+事务回滚

    在"Spring/SpringMVC/MyBatis整合+事务回滚"的主题中,我们将深入探讨如何将这三个框架整合起来,并实现事务的回滚功能。 首先,Spring框架是核心,它提供了依赖注入(DI)和面向切面编程(AOP)的能力,使得代码更...

    spring 简单实例 事务回滚

    在这个“spring简单实例 事务回滚”的案例中,我们将深入探讨Spring如何处理事务回滚,以及它是如何在Java源码层面实现这一功能的。 首先,让我们理解什么是事务。在数据库操作中,事务是确保数据一致性的重要机制...

    JAVA jdbc-mysql练习

    此外,JDBC事务管理也是重要一环。通过`Connection.setAutoCommit(false)`禁用自动提交,然后在一组操作完成后调用`Connection.commit()`提交事务,或者在发生错误时调用`Connection.rollback()`回滚。 对于初学者...

    JAVA设置手动提交事务,回滚事务,提交事务的操作

    JAVA设置手动提交事务、回滚事务、提交事务的操作详解 本文主要介绍了JAVA设置手动提交事务、回滚事务、提交事务的操作,涉及到事务的自动提交、手动提交、回滚和提交等操作。以下是对这些操作的详细解释和示例代码...

    oracle 在java中的事务处理和异常回滚。

    在Java编程中,Oracle...总的来说,Oracle在Java中的事务处理和异常回滚是通过JDBC接口实现的,它保证了数据库操作的原子性、一致性、隔离性和持久性。理解并熟练掌握这些概念对于开发健壮的Java应用程序至关重要。

    javajdbc

    - JDBC支持事务的提交、回滚和隔离级别设置,通过`Connection`对象的`commit()`、`rollback()`和`setTransactionIsolation()`方法实现。 6.批处理: - 对于多条相似的SQL语句,批处理可以提高性能。`addBatch()`...

    java jdbc oracle代码

    5. **Transaction Management**: JDBC支持事务处理,通过`Connection`对象的`setAutoCommit()`和`commit()`/`rollback()`方法控制事务的开始、提交或回滚。 以下是一个简单的Java JDBC Oracle代码示例,展示了如何...

    Java jdbc操作mysql

    7. **事务管理**:JDBC支持事务,可以通过`Connection`对象的`setAutoCommit(false)`来禁用自动提交,手动控制事务的开始、提交和回滚。 8. **批处理**:对于大量相似的SQL操作,可以使用`Statement`的`addBatch()`...

    javajdbc宠物商店-Mysql数据库_Java项目jdbc_java宠物项目_数据库代码_

    本项目"javajdbc宠物商店-Mysql数据库"是基于Java JDBC实现的一个宠物商店管理系统的数据库部分,它提供了与MySQL数据库交互的能力。在这个项目中,我们将深入探讨以下几个核心知识点: 1. **JDBC API**: JDBC API...

    java jdbc 连接测试代码

    总结起来,Java JDBC连接测试代码涉及的主要知识点有:JDBC API的使用、数据库连接的建立、SQL语句的执行、查询结果的处理以及事务管理。通过分析和理解这些代码,开发者可以更好地掌握Java与数据库的交互。

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

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

    JAVA JDBC教程.zip_zip怎么打开

    6. **事务管理**:JDBC支持事务控制,包括`Connection`对象的`setAutoCommit()`关闭自动提交,以及`commit()`和`rollback()`方法提交或回滚事务。 ### JDBC优化技巧 1. **批处理**:通过`addBatch()`方法添加多个...

    javajdbc课程设计

    Java JDBC提供了对事务的支持,可以使用Connection对象的commit()和rollback()方法来提交或回滚事务。在学生成绩管理系统中,如果一组相关操作(如添加新成绩)必须全部成功或全部失败,就需要使用事务来确保数据的...

    Java JDBC ppt

    JDBC还支持事务处理,可以使用Connection对象的`setAutoCommit(false)`禁用自动提交,然后通过`commit()`或`rollback()`控制事务的提交和回滚。 在实际应用中,为了更好地管理数据库连接,通常会使用连接池(例如C3...

    在Java的JDBC使用中设置事务回滚的保存点的方法

    总结来说,Java的JDBC提供了强大的事务管理能力,包括设置保存点以实现部分回滚。这对于处理复杂的业务逻辑和异常处理是非常有用的。正确理解和使用这些功能,可以帮助开发人员编写出更加健壮和灵活的数据库应用程序...

    用java JDBC访问数据库全部内容

    通过设置Connection的自动提交为false,我们可以手动控制事务的提交或回滚。 7. **异常处理** 在进行数据库操作时,务必捕获并处理可能出现的SQLException,确保程序的健壮性。 总结,Java JDBC提供了全面的...

    jdbc.rar_java jdbc

    JDBC支持事务控制,包括开启事务、提交事务、回滚事务。通过Connection对象的`setAutoCommit(false)`关闭自动提交,手动调用`commit()`或`rollback()`。 7. **GUI与JDBC结合**: 在GUI环境中,如Swing或JavaFX,...

    JDBC的事务初探

    总结,JDBC事务是Java与数据库交互时的关键部分,通过理解事务的概念、级别以及如何在JDBC中控制事务,可以编写出更加健壮、安全的数据库应用程序。在实际项目中,我们还需要关注异常处理、资源管理和事务策略的选择...

    java(jdbc)学习

    4. **事务支持**:JDBC支持事务管理,包括事务的开始、提交和回滚,确保数据的一致性和完整性。 #### 二、JDBC 连接数据库步骤 1. **注册驱动**:通过`Class.forName("com.mysql.jdbc.Driver");`加载数据库驱动...

    java JDBC 连接sql server封装

    如果出现异常,我们将回滚事务。 5. **示例使用** 下面是如何在你的代码中使用`JDBCUtil`的例子: ```java JDBCUtil.executeTransaction(conn -> { String sql = "INSERT INTO yourTable VALUES (?, ?)"; try ...

Global site tag (gtag.js) - Google Analytics