`
Luob.
  • 浏览: 1588737 次
  • 来自: 上海
社区版块
存档分类
最新评论

JDBC 事务 和 savePoint

    博客分类:
  • JDBC
阅读更多
package com.enhance.jdbc;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.Properties;

public class TransactionTest {

	private String driver;
	private String url;
	private String user;
	private String pass;
	private Connection conn;
	private Statement stmt;
	
	public void initParam(String paramFile) throws Exception{
		Properties prop=new Properties();
		prop.load(new FileInputStream(paramFile));
		driver=prop.getProperty("driver");
		url=prop.getProperty("url");
		user=prop.getProperty("user");
		pass=prop.getProperty("pass");
	}
	public void insertInTranscation(String[] sqls){
		Savepoint sp=null;
		try{
			Class.forName(driver);
			conn=DriverManager.getConnection(url,user,pass);
			
			//关闭自动提交 ,并开启事务	
			conn.setAutoCommit(false);
			System.out.println("开启了事务!");
			stmt=conn.createStatement();
			for (String sql : sqls) {
				stmt.execute(sql);
				sp=conn.setSavepoint(); //如果使用  "保存点" 
			}
			//conn.commit(); //提交事务	如果没有使用   "保存点" 
			//System.out.println("提交了事务!");
		}catch(Exception e){
			if(sp!=null){
				try {
					conn.rollback(sp);  //回滚到上一个保存点  但是事务还是没有结束 
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
			e.printStackTrace();
		}finally{
			try {
				conn.commit(); //提交事务	  //使用 "保存点"后依然提交
				System.out.println("提交了事务!");
				if(stmt!=null)
					stmt.close();
				if(conn!=null)
					conn.close();
			} catch (Exception e2) {
				// TODO: handle exception
			}
			
		}
		
	}
	
	
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		TransactionTest tt=new TransactionTest();
		tt.initParam("src/mysql.ini");
		String[]sqls={
				"insert into my_test values(null,'提交事务')"
				,"insert into my_test values(null,'加油')"
				,"update my_test set test_name='comme on!!' where id=5"};//
		tt.insertInTranscation(sqls);
	}

}

分享到:
评论

相关推荐

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

    在实际开发中,了解并熟练运用JDBC事务管理和SavePoint,可以有效地提高程序的健壮性,减少因数据不一致引发的问题。这份PDF文档可能包含了更多关于这两个主题的深入解释、最佳实践以及实战案例,对于提升Java数据库...

    JDBC事务的保存点处理

    首先,我们需要理解JDBC事务的基本概念。JDBC支持四种事务隔离级别,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。每种级别都有不同的...

    JDBC的事务初探

    **JDBC事务初探** Java Database Connectivity(JDBC)是Java平台中用于与关系数据库进行交互的API。在处理数据库操作时,事务管理是至关重要的一个环节,它确保了数据的一致性和完整性。本篇文章将深入探讨JDBC中...

    jdbc入门、分页以及事务

    **JDBC事务** 事务是数据库操作的基本单元,确保数据的一致性和完整性。JDBC提供了对事务的支持。 1. **开启事务**: 通过`Connection`对象的`setAutoCommit(false)`方法关闭自动提交,从而手动控制事务的开始。 2...

    JDBC事物应用源码文件

    JDBC事务应用源码文件通常包含了一系列用于演示如何在Java程序中管理和控制数据库事务的示例代码。以下是关于JDBC事务应用的核心知识点: 1. **事务的基本概念**:事务是数据库操作的基本单元,它封装了一组逻辑...

    JDBC入门中文文档

    JDBC事务处理** - **自动提交**:默认情况下,每次SQL操作都会自动提交,可以通过`conn.setAutoCommit(false)`关闭自动提交。 - **手动提交**:使用`conn.commit()`提交事务,`conn.rollback()`回滚事务。 - **保存...

    非常好的jdbc3.0

    5. **并发和事务管理**:提供了Savepoint接口,允许在事务中设置保存点,可以部分回滚事务,增强了事务的控制粒度。 6. **元数据增强**:Metadata接口的扩展,如DatabaseMetaData,提供了更丰富的数据库元数据查询...

    jdbc 2.0驱动程序jar包

    7. **并发访问和事务控制**:JDBC 2.0支持并发控制和多线程访问,提供了Savepoint接口,可以设置保存点,实现部分回滚,增强了事务处理能力。 8. **高级数据类型**:新增了对数组、日期时间、对象等复杂数据类型的...

    jdbc3.0doc.zip_java jdbc

    6. **事务管理**:JDBC 3.0提供了更强大的事务控制,如savepoint(保存点)功能,允许在事务中设置多个恢复点,提高事务处理的灵活性。 7. **批处理异常处理**:在批处理操作中,如果某个SQL语句执行失败,JDBC 3.0...

    JDBC学习笔记

    #### 十四、JDBC事务处理 - **概念**:事务是一系列操作的集合,要么全部成功,要么全部失败。 - **JDBC事务管理**: - 使用`Connection.setAutoCommit(false)`关闭自动提交。 - 执行一系列数据库操作。 - 成功...

    sqljdbc.jar、sqljdbc4.jar

    "sqljdbc4.jar"是针对Java 6的一个版本,它包含了额外的功能和对新特性的支持,比如支持Java.sql.Savepoint接口,这允许应用程序在事务中设置保存点,以便在出现问题时回滚到特定状态。而"sqljdbc.jar"可能不包含...

    javajdbc

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

    开发过程中事务控制

    在软件开发中,事务控制是确保数据...通过Java的JDBC API,我们可以有效地管理事务,确保数据的一致性和可靠性。在实际编码中,还需要注意资源的释放,避免潜在的资源泄漏,以及根据具体需求选择合适的事务隔离级别。

    jdbc-api

    6. **Savepoint**: 支持保存点,可以在事务中设置多个恢复点,增强事务控制。 7. **ConnectionPool**: 首次提出了连接池的概念,通过DataSource接口实现,提高了应用的并发性能和资源利用率。 JDBC 2.0的这些改进...

    JDBC入门基础讲座

    ### JDBC事务处理 JDBC支持事务控制,包括提交(commit)、回滚(rollback)和保存点(savepoint)。事务的ACID特性(原子性、一致性、隔离性和持久性)确保了数据的完整性和一致性。 ### 错误处理和异常处理 在...

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

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

    Spring Nested事务简单案例

    Nested事务是基于JDBC的Savepoint机制实现的,它可以让我们在一个已有的事务内部开启一个新的事务,而这个新事务被称为子事务。当子事务完成时,如果父事务正常提交,那么子事务所做的更改也会被提交;如果父事务...

    MySQL整合JDBC

    MySQL 整合 JDBC 是将 MySQL 数据库与 JDBC 技术结合使用,实现对数据库的操作和管理。下面是 MySQL 整合 JDBC 的相关知识点: 一、DDL(Data Definition Languages) * 定义数据段、数据库、表、列、索引等数据库...

    jdbc文档案例.zip

    10. **JDBC API的其他接口和类**: `CallableStatement`用于调用存储过程,`DatabaseMetaData`提供了关于数据库的元数据信息,`Savepoint`用于在事务中设置保存点等。 在这个案例中,你可能会学习如何配置数据库连接...

    JDBC 3.0 高级变成

    - **Savepoint**:在事务中设置保存点,可以回滚到特定状态,增强事务控制能力。 3. **事务管理** - **自动提交**:默认情况下,每个JDBC操作都会启动一个隐式事务,完成即提交。可使用`Connection.setAutoCommit...

Global site tag (gtag.js) - Google Analytics