import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Savepoint; public class JDBC { // static final的常量:1.直接初始化;2.通过static代码块初始化 private static final String url; private static final String user; private static final String password; private static final String driver; private static final String sql1 = ""; private static final String sql2 = ""; // 通过static代码块初始化常量也是可行的 static { url = ""; user = ""; password = ""; driver = ""; } public void jdbc() { try { // 实例化驱动 Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection con = null; PreparedStatement ps1 = null; PreparedStatement ps2 = null; Savepoint savepoint = null; try { // 获取数据库连接 con = DriverManager.getConnection(url, user, password); // 设置自动提交为false con.setAutoCommit(false); // 设置事务隔离级别 con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); // 进行事务操作 ps1 = con.prepareStatement(sql1); int rs1 = ps1.executeUpdate(sql1); // 设置保存点 savepoint = con.setSavepoint("SavePoint1"); ps2 = con.prepareStatement(sql2); int rs2 = ps2.executeUpdate(sql2); // 提交事务 con.commit(); // 设置事务自动提交为true con.setAutoCommit(true); } catch (SQLException e) { e.printStackTrace(); try { if (savepoint == null) { // 事务回滚到保存点 con.rollback(savepoint); // 再提交事务 con.commit(); } else { // 直接回滚 con.rollback(); } } catch (SQLException e1) { e1.printStackTrace(); } } finally { // 倒序关闭 try { if (ps1 != null) { ps1.close(); } } catch (SQLException e1) { e1.printStackTrace(); } try { if (ps2 != null) { ps2.close(); } } catch (SQLException e1) { e1.printStackTrace(); } try { if (con != null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
相关推荐
在Java中,JDBC事务处理主要涉及以下几个关键概念: 1. **Connection对象**:它是与数据库的会话,通过该对象可以开启、提交和回滚事务。在连接池中获取到的Connection通常已经自动开启了事务,但如果没有,可以...
**JDBC事务操作** 在Java中,你可以使用Connection对象的`setAutoCommit()`方法来开启或关闭自动提交。关闭自动提交后,你需要手动调用`commit()`来提交事务,或者在发生错误时调用`rollback()`来回滚事务。例如: ...
"JDBC事务管理的简单实现" 在JDBC编程中,事务管理是非常重要的一部分。为了实现数据一致性,需要在代码中显示的调用Connection方法的事务相关API来完成工作。下面是关于JDBC事务管理的简单实现的知识点。 一、...
JDBC事务管理是数据库操作的重要组成部分,特别是在多用户并发访问数据库的环境中,保证数据的一致性和完整性至关重要。本文主要探讨了事务的基本概念、ACID原则、数据库并发问题以及解决方案。 首先,事务是数据库...
**JDBC事务初探** Java Database Connectivity (JDBC) 是Java平台中用于访问数据库的标准API。在处理数据库操作时,事务管理是确保数据一致性、完整性和持久性的重要机制。本篇将深入探讨JDBC中的事务处理,以及...
**JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...
这些工具类简化了SQL的执行,同时也支持事务操作。例如,可以通过`JdbcTemplate`的`execute()`方法执行包含事务的SQL语句,并通过抛出异常来触发事务回滚。 **源码分析**:深入理解Spring JDBC事务管理的源码,可以...
### JDBC事务控制详解 在数据库应用开发中,事务管理是一项重要的功能,它确保了一系列操作能够作为一个整体被正确地执行或回滚。Java Database Connectivity (JDBC) 是 Java 平台中用于连接数据库的标准 API,提供...
总结起来,JDBC事务适用于简单的单库操作,而JTA事务则适合处理跨多个数据源的复杂事务场景。在J2EE环境中,容器管理的事务(如SessionBean中的JTA事务)能够提供更高的可伸缩性和可靠性。在实际应用中,根据需求...
本项目“JDBC事务管理项目”旨在教你如何在Java应用中使用JDBC来处理数据库事务,确保数据的一致性和完整性。 **事务的概念** 事务是数据库操作的基本单元,它包含了对数据库的一系列操作,这些操作要么全部成功,...
《Sharding-JDBC分布式事务应用》是一篇关于Java领域中如何利用Sharding-JDBC实现分布式事务的专题讨论。Sharding-JDBC是阿里巴巴开源的一款轻量级数据库中间件,它为Java开发者提供了一种透明化的数据分片解决方案...
### JavaBean中使用JDBC方式进行事务处理 #### 一、引言 在现代软件开发过程中,数据一致性是非常关键的一个方面,特别是在涉及到多个数据库操作时。本文将详细介绍如何在JavaBean中利用JDBC(Java Database ...
二、JDBC事务操作 三、DBUtils事务操作 四、使用ThreadLocal绑定连接资源 五、事务的特性和隔离级别(概念性问题---面试)。 1.什么是事务 2.mysql的事务 1.QueryRunner 1.事务的特性ACID 2.并发访问问题----由...
(2)(2) 在BookShopDao中添加一个purchase购书方法,其操作流程是获取书的单价->买书(更新库存)->更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常...
使用JDBC事务,可以确保操作的原子性: ```java Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); conn.setAutoCommit(false); // 关闭自动提交 Statement stmt = conn.createStatement(); ...
1.1.3 JDBC事务操作 在Java中,我们可以使用JDBC API来管理数据库事务。通过`Connection`对象的以下方法: - `setAutoCommit(false)`:关闭自动提交,从而开启事务。 - `commit()`:提交当前事务。 - `rollback()`:...
**二、JDBC事务管理** JDBC支持自动提交和手动提交事务。默认情况下,每次SQL操作都会自动提交。若需自定义事务,可以调用`Connection`对象的`setAutoCommit(false)`来关闭自动提交,然后在所有操作完成后调用`...
在大型应用中,可能会有复杂的事务操作,可能需要回滚到事务中的某个特定点,而不是全部回滚。这时,SavePoint就派上用场了。通过设置SavePoint,我们可以创建一个事务内部的状态点,如果后续操作出现问题,可以将...
在描述中提到的博客链接(由于实际链接无法访问,这里无法提供具体细节),可能详细讲述了如何在Spring中配置和使用JDBC事务,包括示例代码和常见问题解决。在实际项目中,理解并正确应用这些事务管理机制对于保证...