如何使用JDBC进行批处理?
业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。
实现批处理有两种方式,
第一种方式: Statement.addBatch(sql) (其实是将sql语句 放在了一个 list 集合中。)
第二种方式: PreparedStatement.addBatch() (其实是将sql语句 放在了一个 list 集合中。)
执行批处理SQL语句
executeBatch()方法:执行批处理命令
clearBatch()方法:清除批处理命令(实际上是清除 List集合中的SQL语句,否则会造成内存溢出。)
接下去比较2种方法的优缺点,可以更好的在实际工作场景中得以更好的应用。
第一种方式:Statement.addBatch(sql)
采用Statement.addBatch(sql)方式实现批处理的优缺点
优点:可以向数据库发送多条不同的SQL语句。
缺点:SQL语句没有预编译。当向数据库发送多条语句相同,但仅参数不同的SQL语句时,需重复写上很多条SQL语句。
Demo样例:
@Test
public void test1() throws SQLException{
Connection conn = null;
Statement st = null;
ResultSet rs = 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();
st.clearBatch();
} finally{
JdbcUtil.free(conn, st, rs);
}
}
方法二、实现批处理的第二种方式:PreparedStatement.addBatch()
优点:发送的是预编译后的SQL语句,执行效率高。
缺点:只能应用在SQL语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。
Demo样例:
@Test
public void test2() throws SQLException{
conn = JdbcUtil.getConnection();
String sql = "insert into user(name,password,email,birthday) values(?,?,?,?)";
st = conn.prepareStatement(sql);
for(int i=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 Date(1980, 10, 10));
st.addBatch();
if(i%1000==0){ //为防止(list集合) 内存溢出:设定每累加1000条数据就向数据库发送一次
st.executeBatch();
st.clearBatch();
}
}
st.executeBatch(); //当剩余的条数小于1000条时就不会被发送到数据库,所以此处要在发送一次。
}
分享到:
相关推荐
java代码-使用java解决数据库批处理的源代码 ——学习参考资料:仅用于个人学习使用!
在本压缩包“S2北大青鸟 使用Java实现数据库编程(包含项目).zip”中,主要涵盖的是S2学期的学习内容,重点在于讲解如何使用Java语言进行数据库编程。...在实践中不断探索和优化,才能真正成为熟练的Java数据库程序员。
本教程将重点讨论如何使用Java语言来实现对MySQL数据库的编程操作。通过提供的压缩包"使用Java实现数据库编程-1488176910082",我们可以深入学习这一主题。 首先,Java与MySQL的交互主要依赖于JDBC(Java Database ...
这些知识点的深入理解和实践,将帮助开发者构建出健壮、高效的Java数据库应用程序。在学习过程中,学生不仅需要理解概念,还需要动手编写代码,通过实际操作来巩固理论知识。通过Chapter01等文件的学习,可以逐步...
在“Accp8.0\S2\使用Java实现数据库编程”这...总之,“Accp8.0\S2\使用Java实现数据库编程”的课程内容全面,涵盖了从基础的JDBC操作到高级的数据库管理技巧,通过学习和实践,你将能够熟练地使用Java进行数据库编程。
本主题将深入探讨如何使用Java实现数据库操作,包括连接数据库、执行SQL语句、处理结果集以及事务管理。 1. **JDBC(Java Database Connectivity)** JDBC是Java中用于访问数据库的标准API,它提供了统一的方法来...
在提供的压缩包文件中,"第7章实例"可能涵盖了存储过程的调用,"第6章实例"可能涉及了复杂查询的实现,而"第8章实例"可能介绍了批处理操作或者异常处理的相关内容。这些实例将进一步巩固对JDBC和数据库编程的理解,...
在Java编程语言中,对数据库的操作是通过Java Database Connectivity (JDBC) API来实现的。JDBC提供了一组标准的接口和类,使得Java程序能够连接到各种类型的数据库,执行SQL语句,处理结果集,并进行事务管理。下面...
### Java高效实现批处理Excel数据导入数据库代码 #### 概述 本文档介绍了一种使用Java语言高效地将Excel文件中的数据批量导入到SQL Server数据库的方法。这种方法利用了`jxl`库读取Excel文件,并通过`...
JDBC为开发者提供了一种统一的方法来处理SQL语句,实现对数据库的数据操作。 在Java中,使用JDBC进行数据库操作通常涉及以下步骤: 1. **加载驱动**:首先,我们需要加载对应数据库的JDBC驱动。这通常是通过`Class...
**JDBC第五章数据库实例详解** 在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一组接口和类。...掌握这些内容将为开发高效、稳定的Java数据库应用打下坚实基础。
本文将深入探讨JDBC在MySQL数据库中的应用,以及如何实现批处理操作。 首先,理解JDBC的基础知识至关重要。JDBC是Java平台的标准,由Sun Microsystems(现为Oracle公司)开发,使得Java应用程序能够与多种数据库...
这个jar包是MySQL提供的,它实现了JDBC接口,使得Java能够理解和处理MySQL特有的SQL语法和数据库特性。 要开始使用,首先确保你的项目中包含了`mysql-connector-java.jar`。如果你是从Maven仓库引入,可以在pom.xml...
总的来说,"Accp8.0\S2\使用Java实现数据库编程 第八章"涵盖了Java数据库编程的关键概念和技术,对于想成为Java后端开发人员的学习者来说,是不可或缺的一部分。通过深入学习和实践,不仅可以掌握数据库操作,还能为...
在Oracle中,批处理可以通过多种方式实现,例如使用SQL*Plus、PL/SQL块、Java stored procedures,或者是通过外部工具如Oracle Data Pump导出导入数据。这里特别提到了"xml w3c",这可能是指在批处理过程中涉及到XML...
本文将基于一个具体的Java多线程操作数据库的应用程序,深入探讨其背后的原理、实现细节以及潜在的挑战。 #### 核心知识点: 1. **多线程基础**:多线程是Java编程中的一个重要概念,允许程序同时执行多个任务。在...
在Java编程语言中,对数据库的操作是至关重要的一个部分,特别是在开发企业级应用程序时。Java提供了多种方式来与各种类型的数据库进行交互,如MySQL、Oracle、SQL Server等。本篇文章将详细探讨Java如何进行数据库...
Java数据库驱动包是Java应用程序与各种数据库之间进行通信的关键组件。在Java中,JDBC(Java Database Connectivity)是一个标准API,允许程序员用Java语言来访问和处理存储在各种数据库中的数据。这个压缩包包含了...
本资源"基于java的数据库基本操作源代码"提供了针对数据库表的增删改查(CRUD)功能,是初学者理解和实践Java数据库连接(JDBC)的理想教程。我们将深入探讨以下几个核心知识点: 1. **Java Database Connectivity ...
在这个资料包中,"Java数据库操作代码精粹"可能包含了各种实用示例,帮助开发者理解和实践如何在Java应用中与数据库进行有效通信。 Java数据库操作主要依赖于JDBC(Java Database Connectivity),这是一个Java API...