l业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。
l实现批处理有两种方式,第一种方式:
•Statement.addBatch(sql)
l执行批处理SQL语句
•executeBatch()方法:执行批处理命令
•clearBatch()方法:清除批处理命令
Connection conn = null;
Statement st = null;
ResultSetrs = null;
try {
conn = JdbcUtil.getConnection();
String sql1 = "insert into user(name,password,email,birthday)
values('kkk','123','abc@sina.com','1978-08-08')";
String sql2 = "update user set password='123456' where id=3";
st = conn.createStatement();
st.addBatch(sql1); //把SQL语句加入到批命令中
st.addBatch(sql2); //把SQL语句加入到批命令中
st.executeBatch();
} finally{
JdbcUtil.free(conn, st, rs);
}
Insert into user(name,password) values(‘aa’,’111’);
Insert into user(name,password) values(‘bb’,’222’);
Insert into user(name,password) values(‘cc’,’333’);
Insert into user(name,password) values(‘dd’,’444’);
conn = JdbcUtil.getConnection();
String sql = "insert into user(name,password,email,birthday) values(?,?,?,?)";
st = conn.prepareStatement(sql);
for(inti=0;i<50000;i++){
st.setString(1, "aaa" + i);
st.setString(2, "123" + i);
st.setString(3, "aaa" + i + "@sina.com");
st.setDate(4,new java.sql.Date(new java.util.Date().getTime()));
st.addBatch();
if(i%1000==0){
st.executeBatch();
st.clearBatch();
}
}
st.executeBatch();
/** * 批量执行混合模式的SQL、有预定义的,还有静态的 */ public static void exeBatchMixedSQL() { Connection conn = null; try { conn = DBToolkit.getConnection(); String sql = "insert into testdb.book (kind, name) values (?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "java"); pstmt.setString(2, "jjjj"); pstmt.addBatch(); //添加一次预定义参数 pstmt.setString(1, "ccc"); pstmt.setString(2, "dddd"); pstmt.addBatch(); //再添加一次预定义参数 //添加一次静态SQL pstmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'"); //批量执行预定义SQL pstmt.executeBatch(); } catch (SQLException e) { e.printStackTrace(); } finally { DBToolkit.closeConnection(conn); } }
如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():
PreparedStatement pstmt3D null;
try {
((OraclePreparedStatement)pstmt).setExecuteBatch(30);
...
pstmt.executeUpdate();
}
调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。
相关推荐
JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式
本文将详细阐述JDBC批处理的基本概念、优势以及如何在实际应用中使用。 一、批处理的概念 批处理是指一次性提交多个SQL语句到数据库进行执行,而不是逐个发送和执行。在JDBC中,批处理主要通过Statement或...
**JDBC批处理详解** 在Java数据库连接(Java Database Connectivity, JDBC)中,批处理是一项重要的功能,它允许开发者一次性提交多个SQL语句,从而提高数据处理的效率和性能。批处理是数据库操作中的优化手段,...
在给定的博客链接中,可能详细解释了这些概念,并提供了示例代码来演示如何在实际应用中实现JDBC批处理。通过学习这个资源,开发者可以更好地理解和应用批处理技术,提升Java数据库应用程序的效率。
JDBC批处理的实现依赖于数据库驱动的实现,不同数据库的驱动可能会有不同的优化策略。深入研究JDBC源码,可以帮助我们理解批处理在底层是如何工作的,以及如何针对特定数据库优化性能。 ### 8. 工具支持 很多...
在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一组接口和类。MySQL批处理是JDBC提供的一种优化数据库操作的方法,它允许开发者一次提交多个SQL语句,从而提高数据处理效率。本文将...
通过上述示例可以看出,使用JDBC批处理能够显著提高数据处理的速度和效率,特别是在处理大量数据时。为了进一步优化性能,还可以考虑以下几点: - **批量提交大小:** 调整批处理中SQL语句的数量,找到最佳的批量...
例如,如果你需要更新大量用户的数据,可以使用JDBC批处理来批量更新,减少网络通信和数据库事务处理的开销。 结合这三个技术,我们可以实现一个功能强大的系统。例如,一个基于Web的应用可能需要从用户上传的Excel...
方立勋老师的JDBC笔记还会深入到JDBC的高级特性,如JDBC批处理、连接池的使用、JNDI数据源、以及JDBC的最新版本特性等,这些都是Java开发者必须掌握的技能。通过这些笔记的学习,读者将能够熟练地使用JDBC进行数据库...
在Java数据库连接(JDBC)中,增删改查(CRUD)操作是与数据库交互的基础,事务处理、批处理和预编译SQL语句则是提高效率和保证数据一致性的关键技术。以下是对这些概念的详细说明: 1. **JDBC增删改查(CRUD)**:...
10. **JDBC批处理API**: Hibernate底层使用JDBC的批处理API(Statement.addBatch()和Statement.executeBatch()),用户也可以直接使用JDBC批处理,绕过Hibernate的部分逻辑,获取更高的性能。 11. **性能优化注意...
- **批处理**:学习如何使用JDBC进行批处理操作,提高数据库操作效率。 - **结果集处理**:掌握如何处理查询结果集,获取数据。 - **不同数据库的支持**:了解JDBC对不同数据库的支持情况。 - **ORM框架**:熟悉...
- **批处理操作**:了解如何使用JDBC进行批处理,提高数据插入性能。 5. **EJB(Enterprise JavaBeans)** - **EJB类型**: Stateless Session Beans、Stateful Session Beans、Message-driven Beans的概念和应用...
本资料“使用JDBC进行增删改查共12页.pdf.zip”似乎是一份详细的教程,涵盖了JDBC的基本用法和实践案例,适用于初学者或需要巩固JDBC知识的开发者。 首先,JDBC工作原理是通过加载数据库驱动,建立与数据库的连接。...
### 使用JDBC动态连接数据库 #### 一、JDBC简介 JDBC,即Java DataBase Connectivity标准,是一个由Sun Microsystems设计的API(应用程序编程接口),它允许Java程序与各种关系型数据库进行交互。作为Java核心类库...
6. **批处理(Batch Processing)**:对于需要执行大量相似SQL语句的情况,JDBC提供批处理功能,允许一次发送多个SQL语句,从而提高效率。 7. **JDBC URL**:每个数据库驱动都有一个特定的JDBC URL格式,用于标识要...
此外,对于大规模应用,还可以考虑使用JDBC的批处理功能来提高批量插入或更新的效率。 总之,MySQL JDBC连接器是Java开发者不可或缺的工具,它使得我们可以方便地在Java应用中集成MySQL数据库,实现各种复杂的...
- 使用JDBC的批处理功能提高批量操作的效率。 6. **常见问题及解决方案** - 连接超时:检查网络状况,或者调整数据库的连接超时设置。 - SQL语法错误:遵循Greenplum的SQL语法规范,避免使用不支持的特性。 - ...
8. **性能优化**:使用JDBC的批处理、预编译语句和连接池等技术可以显著提升数据库操作的性能。 9. **异常处理**:在JDBC编程中,需要捕获SQLException及其子类异常,进行适当的错误处理。 10. **连接池**:在实际...
总之,JDBC是Java开发者与各种数据库进行交互的关键工具,理解并熟练掌握JDBC的各项功能,能够提升开发效率,确保数据操作的高效性和安全性。这份英文版的JDBC使用参考手册将为你的数据库编程之路提供详尽的指导。