package lavasoft.jdbctest;
import lavasoft.common.DBToolkit;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC的批量操作三种方式
*
* @author leizhimin 2009-12-4 14:42:11
*/
public class BatchExeSQLTest {
public static void main(String[] args) {
exeBatchStaticSQL();
}
/**
* 批量执行预定义模式的SQL
*/
public static void exeBatchParparedSQL() {
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.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
/**
* 批量执行混合模式的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);
}
}
/**
* 执行批量静态的SQL
*/
public static void exeBatchStaticSQL() {
Connection conn = null;
try {
conn = DBToolkit.getConnection();
Statement stmt = conn.createStatement();
//连续添加多条静态SQL
stmt.addBatch("insert into testdb.book (kind, name) values ('java', 'java in aciton')");
stmt.addBatch("insert into testdb.book (kind, name) values ('c', 'c in aciton')");
stmt.addBatch("delete from testdb.book where kind ='C#'");
stmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");
// stmt.addBatch("select count(*) from testdb.book"); //批量执行不支持Select语句
//执行批量执行
stmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
}
注意:JDBC的批处理不能加入select语句,否则会抛异常:
java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate().
at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:1007)
分享到:
相关推荐
### JDBC批量操作详解 #### 一、JDBC批量插入 JDBC(Java Database Connectivity)是Java平台中用来标准地连接数据库的技术。通过JDBC,Java应用程序可以与多种类型的数据库进行交互,实现数据的读取、写入等功能...
### JDBC批量操作数据分析与实例 #### 一、引言 在日常软件开发中,数据库操作是必不可少的一部分。其中,批量操作作为一种高效的处理方式被广泛应用于数据处理任务中。本文将通过对一个具体的Java程序示例(使用...
通过这样的性能测试,我们可以了解到在特定场景下,Mybatis和JDBC哪个更适合批量插入操作。通常,Mybatis由于其封装和优化,可能会在易用性和性能之间取得更好的平衡。但具体选择应根据项目需求和实际环境进行权衡。...
### JDBC批量操作详解:效率与性能的提升策略 在数据库操作中,批量处理是一种常见的优化技术,用于提高数据处理的效率和性能。JDBC(Java Database Connectivity)作为Java应用程序与数据库交互的标准API,提供了...
如果在批量操作中发生错误,整个事务可以回滚,避免了部分插入的数据不一致问题。 - **使用Oracle特定的Blob处理**:Oracle提供了`oracle.sql.BLOB`类,它具有更高级别的功能,如直接从文件系统读写Blob,可以减少...
首先,我们需要了解JDBC的批量操作接口。`java.sql.Statement`和`java.sql.PreparedStatement`接口都提供了批量处理的方法。批量处理主要通过`addBatch()`方法添加SQL语句到批处理队列,然后通过`executeBatch()`...
文章地址:...Java-JDBC【之】批量插入操作、优化取消自动提交(提速40+倍) 1.JDBC批量操作 2.两种实现方式 3.优化,取消自动提交 4.完整源码 《目录:Java-JDBC学习(编写中...)》 《幕》
本篇文章将深入探讨三种不同的JDBC批量插入编程方法,并进行对比分析,以帮助开发者更好地理解和选择适合的批量处理方式。 1. **使用PreparedStatement的addBatch()和executeBatch()** JDBC提供了...
本篇文章将详细介绍如何使用Java实现JDBC批量插入数据,并比较三种常见的JDBC批量插入编程方法。 **方法一:使用PreparedStatement加批量的方法** PreparedStatement是Statement的子接口,允许预编译SQL语句,这...
在Java世界里,JDBC是连接各种数据库的标准,无论你是使用MySQL、Oracle还是SQL Server,都可以通过JDBC进行操作。 **一、JDBC基本操作流程** 1. **加载驱动**:使用`Class.forName()`方法加载数据库驱动,例如`...
本程序是一个基于JAVA实现的JDBC数据库操作小程序,它提供了全面的数据库交互功能,包括增(Insert)、删(Delete)、改(Update)和查(Select)。此外,还增加了模糊查询等高级特性,非常适合JAVA初学者作为学习...
对于任何从事数据库操作的Java开发者而言,掌握正确的JDBC连接字符串构造方法至关重要,这不仅能够确保数据库连接的稳定性和安全性,还能够提高代码的可读性和可维护性。 ### JDBC连接字符串概述 JDBC连接字符串,...
- **批量大小**:适当调整批量操作的大小,太大可能导致内存压力,太小则无法充分利用批量处理的优势。需要根据具体场景和服务器资源进行调整。 - **事务管理**:确保批量操作在一个事务中完成,以保证数据的一致性...
**JDBC操作技术详解** Java Database Connectivity (JDBC) 是Java平台中用于与关系型数据库交互的一组标准API。它是Java编程语言的核心组件之一,允许Java开发者执行SQL语句并处理来自数据库的结果。JDBC提供了统一...
MySQL批处理是JDBC提供的一种优化数据库操作的方法,它允许开发者一次提交多个SQL语句,从而提高数据处理效率。本文将深入探讨JDBC在MySQL数据库中的应用,以及如何实现批处理操作。 首先,理解JDBC的基础知识至关...
批量操作(Batch Updates)也可以显著提升效率。 9. **连接池管理**:在实际应用中,为了提高性能和减少资源消耗,通常使用连接池(如C3P0, HikariCP)来管理数据库连接,避免频繁地创建和关闭连接。 通过理解并...
JDBC API提供了`Statement`和`PreparedStatement`接口的`clearBatch()`方法,用于清除当前批量操作中的所有语句,以及`Connection`接口的`createStatement()`和`prepareStatement()`方法,用于创建`Statement`和`...
然而,C++没有内置的JDBC接口,所以这里提到的"C++操作MYSQL库类JDBC"可能是指用C++实现的一个类似JDBC的库,以便在C++程序中使用与JDBC相似的API来连接和操作MySQL数据库。 在C++中,通常我们会使用MySQL ...
在IT行业中,数据库管理和操作是至关重要的任务,而Java中的JDBC(Java Database Connectivity)是连接Java应用程序与数据库的关键技术。本主题将深入探讨利用JDBC进行触发器创建、存储过程执行、表的构建,以及...