`
yanguz123
  • 浏览: 564975 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JDBC事务操作

    博客分类:
  • Code
 
阅读更多

 

 

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();
			}

		}

	}
}

 

 

分享到:
评论

相关推荐

    JDBC事务操作例子所需jar包

    在Java中,JDBC事务处理主要涉及以下几个关键概念: 1. **Connection对象**:它是与数据库的会话,通过该对象可以开启、提交和回滚事务。在连接池中获取到的Connection通常已经自动开启了事务,但如果没有,可以...

    MySQL_4_JDBC高级操作和事务1

    **JDBC事务操作** 在Java中,你可以使用Connection对象的`setAutoCommit()`方法来开启或关闭自动提交。关闭自动提交后,你需要手动调用`commit()`来提交事务,或者在发生错误时调用`rollback()`来回滚事务。例如: ...

    JDBC事务管理的简单实现

    "JDBC事务管理的简单实现" 在JDBC编程中,事务管理是非常重要的一部分。为了实现数据一致性,需要在代码中显示的调用Connection方法的事务相关API来完成工作。下面是关于JDBC事务管理的简单实现的知识点。 一、...

    JDBC事务管理.docx

    JDBC事务管理是数据库操作的重要组成部分,特别是在多用户并发访问数据库的环境中,保证数据的一致性和完整性至关重要。本文主要探讨了事务的基本概念、ACID原则、数据库并发问题以及解决方案。 首先,事务是数据库...

    JDBC的事务初探

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

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

    **JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...

    spring JDBC事务管理

    这些工具类简化了SQL的执行,同时也支持事务操作。例如,可以通过`JdbcTemplate`的`execute()`方法执行包含事务的SQL语句,并通过抛出异常来触发事务回滚。 **源码分析**:深入理解Spring JDBC事务管理的源码,可以...

    JDBC事务控制--讲述如何控制JDBC事务

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

    JDBC事务处理机制探秘

    总结起来,JDBC事务适用于简单的单库操作,而JTA事务则适合处理跨多个数据源的复杂事务场景。在J2EE环境中,容器管理的事务(如SessionBean中的JTA事务)能够提供更高的可伸缩性和可靠性。在实际应用中,根据需求...

    JDBC事务管理项目

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

    Sharding-JDBC分布式事务应用

    《Sharding-JDBC分布式事务应用》是一篇关于Java领域中如何利用Sharding-JDBC实现分布式事务的专题讨论。Sharding-JDBC是阿里巴巴开源的一款轻量级数据库中间件,它为Java开发者提供了一种透明化的数据分片解决方案...

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

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

    19-事务-源代码.rar

    二、JDBC事务操作 三、DBUtils事务操作 四、使用ThreadLocal绑定连接资源 五、事务的特性和隔离级别(概念性问题---面试)。 1.什么是事务 2.mysql的事务 1.QueryRunner 1.事务的特性ACID 2.并发访问问题----由...

    Spring JDBC与事务管理

    (2)(2) 在BookShopDao中添加一个purchase购书方法,其操作流程是获取书的单价->买书(更新库存)->更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常...

    jdbc事务及分页

    使用JDBC事务,可以确保操作的原子性: ```java Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); conn.setAutoCommit(false); // 关闭自动提交 Statement stmt = conn.createStatement(); ...

    day22--事务2

    1.1.3 JDBC事务操作 在Java中,我们可以使用JDBC API来管理数据库事务。通过`Connection`对象的以下方法: - `setAutoCommit(false)`:关闭自动提交,从而开启事务。 - `commit()`:提交当前事务。 - `rollback()`:...

    非常有用的jdbc的操作数据库

    **二、JDBC事务管理** JDBC支持自动提交和手动提交事务。默认情况下,每次SQL操作都会自动提交。若需自定义事务,可以调用`Connection`对象的`setAutoCommit(false)`来关闭自动提交,然后在所有操作完成后调用`...

    JDBC事务管理及SavePoint示例Java开发Jav

    在大型应用中,可能会有复杂的事务操作,可能需要回滚到事务中的某个特定点,而不是全部回滚。这时,SavePoint就派上用场了。通过设置SavePoint,我们可以创建一个事务内部的状态点,如果后续操作出现问题,可以将...

    spring jdbc 事务

    在描述中提到的博客链接(由于实际链接无法访问,这里无法提供具体细节),可能详细讲述了如何在Spring中配置和使用JDBC事务,包括示例代码和常见问题解决。在实际项目中,理解并正确应用这些事务管理机制对于保证...

Global site tag (gtag.js) - Google Analytics