- 浏览: 1335628 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kay11:
...
JAVA生成简单的随机字符串(a-zA-Z0-9) -
zhangliguoaccp:
您好关于登录页面的验验证码这块怎么解决的?还有登录成功后,跳转 ...
JAVA,模拟HTTP登录 -
107x:
不错,谢谢!
<c:foreach 循环 map -
wenjin:
不知楼主是不还在想请叫一下我自己开的Tomcat下载一个文件C ...
Android 下载文件及写入SD卡 -
zyywgf:
JSTL c标签,fn标签,fmt标签
JDBC的批处理操作三种方式
SQL批处理是JDBC性能优化的重要武器,经本人研究总结,批处理的用法有三种。
package lavasoft.jdbctest;
import lavasoft.common.DBToolkit;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC的批量操作三种方式
*/
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);
}
}
}
import lavasoft.common.DBToolkit;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC的批量操作三种方式
*/
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)
at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:1007)
发表评论
-
oracle 按每天、周、月、季度、年统计
2018-07-30 09:27 1769//按天统计,createtime为数据库的date类型,格 ... -
oracle case when 复杂统计SQL
2015-10-21 10:18 2868select substr(unitcode,0,6),c ... -
oracle 取树形结构的数据,一条sql
2013-05-16 15:47 1875例子:select * from tb_cod_ ... -
SQL中in和exists的区别
2013-03-12 11:53 1499in和existsin 是把外表和内表作hash 连接,而e ... -
A表字段更新为B表的字段值
2013-03-12 11:34 2183T1表 结构 id name sc ... -
db2 备份表的sql
2013-03-07 18:09 16571)创建一个备份表create table t_public ... -
sql 添加修改删除字段 语句
2013-02-26 10:32 8981.增加字段 alter table docdsp ... -
Oracle一列的多行数据拼成一行显示字符
2013-01-23 11:16 8473Oracle一列的多行数据拼成一行显示字符 oracle ... -
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
2012-12-05 14:28 1443com.microsoft.sqlserver.jdbc.SQ ... -
db2采用移除而非删除,补救彻底删除数据库方法
2012-11-07 15:51 1498db2采用自带的客户端,删除数据库不小心点了 “移除”而非“删 ... -
DB2错误信息 查看命令
2012-11-07 15:49 974本机如果安装了DB2数据库,可以直接使用命令查看错误代码对应的 ... -
DB2错误信息(按sqlcode排序)
2012-10-22 13:21 11032DB2错误信息(按sqlcode排序) sqlcode sq ... -
数据库取表的前n条记录
2012-08-17 16:22 1457关于row_number() over()的用法 介绍 ... -
DB2 TOP N问题解决方法
2012-08-08 14:48 1201在sql server中的如下sql语句是正确的select ... -
SQL SERVER 2005 导出包含(INSERT INTO)数据的SQL脚本 (使用存储过程)
2012-05-08 19:08 1455通常情况下,SQL Server里面的生成SQL脚本,只 ... -
正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一..
2012-04-11 10:43 18347在win7 下安装oracle_11gR1_databa ... -
java备份mysql数据库
2011-06-13 16:45 996package com.zjx.dbbackup; /* ... -
MySQL 创建用户,授权,撤销,删除
2011-03-30 21:31 2211一, 创建用户: 命令:CREATE USER ... -
mysql left join 多个表
2011-03-16 17:09 37841SQL: select * from t_a a left ... -
Oracle数据库遍历树形结构表[转]
2011-03-01 13:31 17331、从根结点开始找子节 ...
相关推荐
本文将详细阐述JDBC批处理的基本概念、优势以及如何在实际应用中使用。 一、批处理的概念 批处理是指一次性提交多个SQL语句到数据库进行执行,而不是逐个发送和执行。在JDBC中,批处理主要通过Statement或...
在Java数据库连接(JDBC)中,增删改查(CRUD)操作是与数据库交互的基础,事务处理、批处理和预编译SQL语句则是提高效率和保证数据一致性的关键技术。以下是对这些概念的详细说明: 1. **JDBC增删改查(CRUD)**:...
JDBC批处理的实现依赖于数据库驱动的实现,不同数据库的驱动可能会有不同的优化策略。深入研究JDBC源码,可以帮助我们理解批处理在底层是如何工作的,以及如何针对特定数据库优化性能。 ### 8. 工具支持 很多...
以下是JDBC操作步骤的详细解释: 1. **加载数据库驱动程序**: 在进行数据库操作之前,首先需要在Java环境中加载对应的数据库驱动。这通常涉及到将JDBC驱动的JAR文件添加到项目的类路径(classpath)中。对于MySQL...
**JDBC批处理操作** 批处理是提高数据库操作性能的一种方式,通过一次性提交多条SQL语句,减少了网络通信和数据库处理的开销。以下是使用Statement和PreparedStatement对象进行批处理的基本步骤: 1. **使用...
#### 三、事务与批处理混合使用 在实际应用中,通常会结合使用事务管理和批处理技术,以进一步提高性能并保证数据的一致性。 ```java Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager....
【IT十八掌徐培成】Java基础第23天的课程主要聚焦在JDBC操作数据库时的批量处理技术,特别是`addBatch`和`executeBatch`这两个关键方法。在Java中,当我们需要对数据库进行大量数据的插入、更新或删除操作时,传统的...
6. **批处理**:JDBC支持批处理,可以一次提交多个SQL语句,提高效率: ```java PreparedStatement pstmt = conn.prepareStatement("INSERT INTO myTable VALUES (?, ?)"); pstmt.setInt(1, 1); pstmt.setString...
保存大文本_分页_批处理”揭示了本文将要讨论的是Java数据库连接(Java Database Connectivity, JDBC)的基础知识,主要包括如何在数据库中处理大文本数据、实现分页查询以及利用批处理提高数据库操作效率这三个核心...
- 使用批处理:`pstmt.addBatch();`和`pstmt.executeBatch();` - 使用PreparedStatement代替Statement,减少解析SQL的时间。 - 关闭资源:`rs.close(); pstmt.close(); conn.close();`以释放数据库连接。 **7. ...
PrepareStatement是JDBC提供的一种预编译的SQL语句,它可以提高数据库操作的效率和安全性。本资源主要涵盖了使用JDBC PrepareStatement进行MySQL数据库操作的各种场景,包括基本的查询、更新以及批量处理。 首先,...
本篇将详细讲解如何使用JDBC来连接Oracle数据库,包括必备的环境配置、连接步骤、SQL操作以及异常处理。 ### 1. 环境配置 首先,确保你的开发环境中已经安装了以下组件: - Java Development Kit (JDK):JDBC是...
9. **批处理**:对于大量相似的SQL操作,JDBC提供了批处理功能,可以提高效率。通过`addBatch()`添加SQL语句,然后调用`executeBatch()`执行。 10. **元数据获取**:JDBC提供`DatabaseMetaData`接口,用于获取关于...
对于大量相似的SQL操作,JDBC支持批处理,可以提高性能。使用`addBatch()`添加SQL语句到批处理队列,然后用`executeBatch()`执行: ```java PreparedStatement pstmt = conn.prepareStatement("INSERT INTO ...
批处理导入SQL文件是数据库管理中的一个重要操作,它主要用于高效地执行大量SQL语句,比如在数据迁移、数据库初始化或更新时。批处理通过合并多个SQL命令为一个单一的处理单元,可以显著提高数据处理速度,减少网络...
- **JDBC驱动类型**:JDBC驱动分为四种类型,分别是Type 1、Type 2、Type 3和Type 4。其中,Type 4驱动是纯Java实现,无需依赖数据库厂商的本地库,性能最优,如Oracle的 Thin Driver。 - **JDBC连接流程**:加载...
- 使用批处理提高性能:`pstmt.addBatch()` 和 `pstmt.executeBatch();` - 使用连接池管理数据库连接,例如C3P0、Apache DBCP或HikariCP,以提高性能和资源利用率。 - 设置合理的超时和最大连接数,防止资源耗尽...
在Java中,通过使用JDBC的批处理功能,开发者可以有效地管理大量数据的导入和更新,从而提高应用的开发效率和运行效率。如果你正在处理这样的问题,这个“批量插入或更新.zip”文件可能包含有价值的示例和指导,帮助...
JDBC提供了一种标准的API,使得开发者能够用Java编写数据库应用程序,无论数据库是哪种类型,如MySQL、Oracle、SQL Server等。本自学文档将带你深入理解和掌握JDBC的核心概念和操作。 **1. JDBC基础知识** JDBC的...