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,可以有效地提高程序的健壮性,减少因数据不一致引发的问题。这份PDF文档可能包含了更多关于这两个主题的深入解释、最佳实践以及实战案例,对于提升Java数据库...
首先,我们需要理解JDBC事务的基本概念。JDBC支持四种事务隔离级别,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。每种级别都有不同的...
**JDBC事务初探** Java Database Connectivity(JDBC)是Java平台中用于与关系数据库进行交互的API。在处理数据库操作时,事务管理是至关重要的一个环节,它确保了数据的一致性和完整性。本篇文章将深入探讨JDBC中...
**JDBC事务** 事务是数据库操作的基本单元,确保数据的一致性和完整性。JDBC提供了对事务的支持。 1. **开启事务**: 通过`Connection`对象的`setAutoCommit(false)`方法关闭自动提交,从而手动控制事务的开始。 2...
JDBC事务应用源码文件通常包含了一系列用于演示如何在Java程序中管理和控制数据库事务的示例代码。以下是关于JDBC事务应用的核心知识点: 1. **事务的基本概念**:事务是数据库操作的基本单元,它封装了一组逻辑...
JDBC事务处理** - **自动提交**:默认情况下,每次SQL操作都会自动提交,可以通过`conn.setAutoCommit(false)`关闭自动提交。 - **手动提交**:使用`conn.commit()`提交事务,`conn.rollback()`回滚事务。 - **保存...
5. **并发和事务管理**:提供了Savepoint接口,允许在事务中设置保存点,可以部分回滚事务,增强了事务的控制粒度。 6. **元数据增强**:Metadata接口的扩展,如DatabaseMetaData,提供了更丰富的数据库元数据查询...
7. **并发访问和事务控制**:JDBC 2.0支持并发控制和多线程访问,提供了Savepoint接口,可以设置保存点,实现部分回滚,增强了事务处理能力。 8. **高级数据类型**:新增了对数组、日期时间、对象等复杂数据类型的...
6. **事务管理**:JDBC 3.0提供了更强大的事务控制,如savepoint(保存点)功能,允许在事务中设置多个恢复点,提高事务处理的灵活性。 7. **批处理异常处理**:在批处理操作中,如果某个SQL语句执行失败,JDBC 3.0...
#### 十四、JDBC事务处理 - **概念**:事务是一系列操作的集合,要么全部成功,要么全部失败。 - **JDBC事务管理**: - 使用`Connection.setAutoCommit(false)`关闭自动提交。 - 执行一系列数据库操作。 - 成功...
"sqljdbc4.jar"是针对Java 6的一个版本,它包含了额外的功能和对新特性的支持,比如支持Java.sql.Savepoint接口,这允许应用程序在事务中设置保存点,以便在出现问题时回滚到特定状态。而"sqljdbc.jar"可能不包含...
- JDBC支持事务的提交、回滚和隔离级别设置,通过`Connection`对象的`commit()`、`rollback()`和`setTransactionIsolation()`方法实现。 6.批处理: - 对于多条相似的SQL语句,批处理可以提高性能。`addBatch()`...
在软件开发中,事务控制是确保数据...通过Java的JDBC API,我们可以有效地管理事务,确保数据的一致性和可靠性。在实际编码中,还需要注意资源的释放,避免潜在的资源泄漏,以及根据具体需求选择合适的事务隔离级别。
6. **Savepoint**: 支持保存点,可以在事务中设置多个恢复点,增强事务控制。 7. **ConnectionPool**: 首次提出了连接池的概念,通过DataSource接口实现,提高了应用的并发性能和资源利用率。 JDBC 2.0的这些改进...
### JDBC事务处理 JDBC支持事务控制,包括提交(commit)、回滚(rollback)和保存点(savepoint)。事务的ACID特性(原子性、一致性、隔离性和持久性)确保了数据的完整性和一致性。 ### 错误处理和异常处理 在...
在Java编程中,Oracle...总的来说,Oracle在Java中的事务处理和异常回滚是通过JDBC接口实现的,它保证了数据库操作的原子性、一致性、隔离性和持久性。理解并熟练掌握这些概念对于开发健壮的Java应用程序至关重要。
Nested事务是基于JDBC的Savepoint机制实现的,它可以让我们在一个已有的事务内部开启一个新的事务,而这个新事务被称为子事务。当子事务完成时,如果父事务正常提交,那么子事务所做的更改也会被提交;如果父事务...
MySQL 整合 JDBC 是将 MySQL 数据库与 JDBC 技术结合使用,实现对数据库的操作和管理。下面是 MySQL 整合 JDBC 的相关知识点: 一、DDL(Data Definition Languages) * 定义数据段、数据库、表、列、索引等数据库...
10. **JDBC API的其他接口和类**: `CallableStatement`用于调用存储过程,`DatabaseMetaData`提供了关于数据库的元数据信息,`Savepoint`用于在事务中设置保存点等。 在这个案例中,你可能会学习如何配置数据库连接...
- **Savepoint**:在事务中设置保存点,可以回滚到特定状态,增强事务控制能力。 3. **事务管理** - **自动提交**:默认情况下,每个JDBC操作都会启动一个隐式事务,完成即提交。可使用`Connection.setAutoCommit...