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

【学习】JDBC Connection 使用PreparedStatement 批处理----手动事务

 
阅读更多
需求:在一个完整的项目里,要往另一个数据库中(新的数据源)批量插入数据,在保证插入的同时,手动控制事务。(要么全部插入成功,要么失败后全部不插入)。
因为项目中只有一个方法中涉及到新的数据源的插入,所以就没打算在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基础------jdbc

    JDBC支持事务管理,可以通过Connection对象的setAutoCommit()方法关闭自动提交,然后手动调用commit()或rollback()来控制事务的提交或回滚。例如,在转账操作中,确保转账前后数据库状态的一致性。 **4.批处理操作*...

    SQL Server_JDBC驱动【mssql-jdbc-6.4.0.jre8.jar】.rar

    你可以使用`Connection`对象的`setAutoCommit(false)`来关闭自动提交,然后手动控制事务的提交和回滚: ```java conn.setAutoCommit(false); // 执行SQL操作... conn.commit(); // 提交事务 // 或者 conn.rollback...

    Jdbc相关知识点归档.rar

    总的来说,"Jdbc相关知识点归档.pdf"涵盖了JDBC的全面知识,从基础的连接数据库到高级的事务处理和性能优化,是学习和理解JDBC的宝贵资源。通过深入学习这些内容,Java开发者能够更好地驾驭数据库操作,提升开发效率...

    JDBC操作(ppt)

    - JDBC提供了对事务的支持,通过Connection的setAutoCommit(false)关闭自动提交,然后手动调用commit()或rollback()控制事务边界。 7. **性能优化** - 使用PreparedStatement代替Statement,预编译SQL语句可以...

    java中jdbc的总结

    JDBC支持事务的管理,通过`Connection`对象的`setAutoCommit(false)`关闭自动提交,手动控制事务的开始、提交和回滚。例如: ```java connection.setAutoCommit(false); // 开始事务 try { statement....

    JDBC学习手册,开发手册两套(初学者必备)

    **JDBC学习手册** JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准Java API,它允许Java开发者在程序中执行SQL语句,从而实现对数据库的增删改查操作。本JDBC学习手册涵盖了JDBC的核心...

    JDBC学习笔记(精华版)-1

    可调用`Connection.setAutoCommit(false)`关闭自动提交,开启手动事务控制。 2. **开始事务**:通过`Connection.setAutoCommit(false)`开启事务。 3. **提交事务**:使用`Connection.commit()`提交事务,所有在此...

    JDBC进行批处理共4页.pdf.zip

    必要时,使用Connection对象的`setAutoCommit(false)`关闭自动提交,并在批处理完成后手动提交或回滚。 3. **异常处理**:在执行批处理时,务必捕获并处理SQLException,避免因单个错误导致整个批处理失败。 批处理...

    JDBC--News.rar_知识库

    - `Connection`对象的`setAutoCommit()`用于关闭自动提交,以便手动控制事务。 - `commit()`和`rollback()`方法用于提交和回滚事务。 7. **异常处理**: - 使用`try-catch-finally`块捕获并处理JDBC异常,确保...

    Java语言SQL接口 JDBC编程技术

    可以使用Connection对象的setAutoCommit()方法关闭自动提交,然后手动调用commit()或rollback()来提交或回滚事务。 4. JDBC批处理 - 对于大量相似的SQL语句,批处理可以提高性能。使用addBatch()添加SQL,然后调用...

    jdbc使用参考手册

    - **事务控制**:`conn.setAutoCommit(false)`禁用自动提交,使用`conn.commit()`和`conn.rollback()`手动管理事务。 ### 6.批处理 - **批处理命令**:`addBatch()`添加SQL到批处理,`executeBatch()`执行整个...

    JDBC课程笔记 适合初学者 很详细

    本笔记旨在为初学者提供详尽的JDBC学习指南,确保你无需额外参考资料即可掌握核心概念。 1. **JDBC驱动程序** - JDBC驱动分为4种类型:JDBC-ODBC桥接驱动、本地API驱动、网络纯Java驱动和协议驱动。 - 注册驱动:...

    JDBC/MySQL-Chapter4.zip

    通过`Connection.setAutoCommit(false)`开启手动提交,然后在操作完成后用`Connection.commit()`提交事务。 6. **批处理**:对于大量相似的SQL操作,批处理可以提高性能。使用`addBatch()`添加SQL语句到批处理队列...

    sqljdbc4-4.0.zip

    `sqljdbc4-4.0.jar`的使用不仅限于基本的连接,它还支持预编译的SQL语句(PreparedStatement),事务处理,批处理操作,以及高级特性如存储过程、游标、大数据类型处理等。此外,这个驱动还提供了JDBC遵从性测试,以...

    JDBC编程技术_jdbc

    - JDBC支持自动提交和手动提交事务。默认情况下,每个SQL语句都会被当作一个单独的事务自动提交。可以通过Connection的setAutoCommit(false)来禁用自动提交,然后使用commit()和rollback()方法控制事务边界。 4. *...

    详细标准的jdbc学习资料

    通过本套学习资料,你可以系统地了解和掌握JDBC的使用,包括建立连接、执行SQL、处理结果、事务处理、批处理和优化技巧等,为实际的数据库操作打下坚实的基础。资料分为四个部分,分别从初级到高级逐步深入,从day1...

    JDBC全部数据库的驱动

    -事务处理:`conn.setAutoCommit(false)`禁用自动提交,手动控制`conn.commit()`和`conn.rollback()`。 -批处理:多条SQL一次性发送,减少网络通信次数。 在实际开发中,选择合适的JDBC驱动至关重要,它直接影响...

    SQLite-JDBC

    4. **事务管理**:SQLite支持事务,可以使用`Connection.setAutoCommit(false)`来手动控制事务的开始、提交和回滚。 5. **异常处理**:在处理JDBC操作时,需要捕获并适当地处理`SQLException`,确保程序的健壮性。 ...

    JDBC連接方法-ORCAL鏈接JDBC

    - **事务管理**:JDBC支持显式事务控制,你可以通过调用`setAutoCommit(false)`来开启手动事务,并使用`commit()`和`rollback()`进行提交和回滚。 - **批处理**:对于大量相似的SQL插入或更新,可以使用`addBatch()...

    Java—JDBC资料汇总

    - JDBC支持手动和自动提交事务,通过Connection对象的setAutoCommit()方法可以控制事务的提交行为。 - 回滚事务使用Connection的rollback()方法,提交事务使用commit()方法。 4. JDBC批处理: - 对于大量相似的...

Global site tag (gtag.js) - Google Analytics