需求:在一个完整的项目里,要往另一个数据库中(新的数据源)批量插入数据,在保证插入的同时,手动控制事务。(要么全部插入成功,要么失败后全部不插入)。
因为项目中只有一个方法中涉及到新的数据源的插入,所以就没打算在SPRING中托管两个数据源,并批量管理事务(这个方案太麻烦)。
直接使用jdbc PreparedStatement 来批处理。
DEMO如下:(主要步骤如下)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
public class TestPs{
//**数据库配置********************************
String ORACLE_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
String ORACLE_USERNAME = "test";
String ORACLE_PASSWORD = "test";
public void excute(){
List<HashMap> list = query();//取得列表的方法,略。
//处理数据
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(ORACLE_URL, ORACLE_USERNAME, ORACLE_PASSWORD);
try{
conn.setAutoCommit(false); //设置不会自动提交
PreparedStatement ps = conn.prepareStatement("insert into TESTTABLE values (?, ?, ?)");
for(int i = 0;i<list.size();i++){
HashMap map = list.get(i);
ps.setString(1, map.get("id").toString());
ps.setString(2, map.get("name").toString());
ps.setString(3, map.get("age").toString());
ps.addBatch();
}
ps.executeBatch();//执行批量插入
ps.close();
conn.commit(); //提交事务
conn.close();
}catch(Exception e){
try{
conn.rollback(); // 操作不成功,回滚事务
}catch(SQLException r){
System.out.println("回滚事务出错!" + r.getMessage());
}
System.out.println(e.getMessage());
}
conn.close();
}
}
分享到:
相关推荐
JDBC支持事务管理,可以通过Connection对象的setAutoCommit()方法关闭自动提交,然后手动调用commit()或rollback()来控制事务的提交或回滚。例如,在转账操作中,确保转账前后数据库状态的一致性。 **4.批处理操作*...
你可以使用`Connection`对象的`setAutoCommit(false)`来关闭自动提交,然后手动控制事务的提交和回滚: ```java conn.setAutoCommit(false); // 执行SQL操作... conn.commit(); // 提交事务 // 或者 conn.rollback...
总的来说,"Jdbc相关知识点归档.pdf"涵盖了JDBC的全面知识,从基础的连接数据库到高级的事务处理和性能优化,是学习和理解JDBC的宝贵资源。通过深入学习这些内容,Java开发者能够更好地驾驭数据库操作,提升开发效率...
- JDBC提供了对事务的支持,通过Connection的setAutoCommit(false)关闭自动提交,然后手动调用commit()或rollback()控制事务边界。 7. **性能优化** - 使用PreparedStatement代替Statement,预编译SQL语句可以...
JDBC支持事务的管理,通过`Connection`对象的`setAutoCommit(false)`关闭自动提交,手动控制事务的开始、提交和回滚。例如: ```java connection.setAutoCommit(false); // 开始事务 try { statement....
**JDBC学习手册** JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准Java API,它允许Java开发者在程序中执行SQL语句,从而实现对数据库的增删改查操作。本JDBC学习手册涵盖了JDBC的核心...
可调用`Connection.setAutoCommit(false)`关闭自动提交,开启手动事务控制。 2. **开始事务**:通过`Connection.setAutoCommit(false)`开启事务。 3. **提交事务**:使用`Connection.commit()`提交事务,所有在此...
必要时,使用Connection对象的`setAutoCommit(false)`关闭自动提交,并在批处理完成后手动提交或回滚。 3. **异常处理**:在执行批处理时,务必捕获并处理SQLException,避免因单个错误导致整个批处理失败。 批处理...
- `Connection`对象的`setAutoCommit()`用于关闭自动提交,以便手动控制事务。 - `commit()`和`rollback()`方法用于提交和回滚事务。 7. **异常处理**: - 使用`try-catch-finally`块捕获并处理JDBC异常,确保...
可以使用Connection对象的setAutoCommit()方法关闭自动提交,然后手动调用commit()或rollback()来提交或回滚事务。 4. JDBC批处理 - 对于大量相似的SQL语句,批处理可以提高性能。使用addBatch()添加SQL,然后调用...
- **事务控制**:`conn.setAutoCommit(false)`禁用自动提交,使用`conn.commit()`和`conn.rollback()`手动管理事务。 ### 6.批处理 - **批处理命令**:`addBatch()`添加SQL到批处理,`executeBatch()`执行整个...
本笔记旨在为初学者提供详尽的JDBC学习指南,确保你无需额外参考资料即可掌握核心概念。 1. **JDBC驱动程序** - JDBC驱动分为4种类型:JDBC-ODBC桥接驱动、本地API驱动、网络纯Java驱动和协议驱动。 - 注册驱动:...
通过`Connection.setAutoCommit(false)`开启手动提交,然后在操作完成后用`Connection.commit()`提交事务。 6. **批处理**:对于大量相似的SQL操作,批处理可以提高性能。使用`addBatch()`添加SQL语句到批处理队列...
`sqljdbc4-4.0.jar`的使用不仅限于基本的连接,它还支持预编译的SQL语句(PreparedStatement),事务处理,批处理操作,以及高级特性如存储过程、游标、大数据类型处理等。此外,这个驱动还提供了JDBC遵从性测试,以...
- JDBC支持自动提交和手动提交事务。默认情况下,每个SQL语句都会被当作一个单独的事务自动提交。可以通过Connection的setAutoCommit(false)来禁用自动提交,然后使用commit()和rollback()方法控制事务边界。 4. *...
通过本套学习资料,你可以系统地了解和掌握JDBC的使用,包括建立连接、执行SQL、处理结果、事务处理、批处理和优化技巧等,为实际的数据库操作打下坚实的基础。资料分为四个部分,分别从初级到高级逐步深入,从day1...
-事务处理:`conn.setAutoCommit(false)`禁用自动提交,手动控制`conn.commit()`和`conn.rollback()`。 -批处理:多条SQL一次性发送,减少网络通信次数。 在实际开发中,选择合适的JDBC驱动至关重要,它直接影响...
4. **事务管理**:SQLite支持事务,可以使用`Connection.setAutoCommit(false)`来手动控制事务的开始、提交和回滚。 5. **异常处理**:在处理JDBC操作时,需要捕获并适当地处理`SQLException`,确保程序的健壮性。 ...
- **事务管理**:JDBC支持显式事务控制,你可以通过调用`setAutoCommit(false)`来开启手动事务,并使用`commit()`和`rollback()`进行提交和回滚。 - **批处理**:对于大量相似的SQL插入或更新,可以使用`addBatch()...
- JDBC支持手动和自动提交事务,通过Connection对象的setAutoCommit()方法可以控制事务的提交行为。 - 回滚事务使用Connection的rollback()方法,提交事务使用commit()方法。 4. JDBC批处理: - 对于大量相似的...