(十七)使用JDBC进行批处理
目录
业务场景:
当需要向数据库中发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率;
使用JDBC进行批处理,实现批处理有两种机制;
第一种方式
Statement.addBatch(sql1) ;
Statement.addBatch(sql2) ;
...
// 内部是 Statement对象维护着一个list对象,保存着批处理的sql语句 ;
executeBatch(); // 执行批处理SQL语句:
clearBatch(); // 清楚批处理命令:即清除 list 中的sql语句 ;
优点:可以向数据库发送多条不同的SQL语句 ;
缺点:SQL语句没有 预编译;当多条SQL语句仅仅是参数不同的时候,也必须呆呆的写多条;
第二种方式
// 先将预编译好的 sql 保存到 prepareStatement对象中,这时候还没有存进 list 里面 ;
prepareStatement(sql);
// 每次调用prepareStatement对象的setxxxx()方法,都覆盖掉之前的sql语句 ;
// 但是我们调用setxxxx方法之前,就会将之前的sql语句添加进内部的list里面,因此覆盖也没有事
PreparedStatement.setXXXX(....) ;
// 将预编译的sql语句,加到PreparedStatment对象内部的list中;
PreparedStatement.addBatch();
// 将预编译的sql语句,加到PreparedStatment对象内部的list中;
PreparedStatement.addBatch();
executeBatch(); // 执行批处理SQL语句:
clearBatch(); // 清楚批处理命令:
优点:发送是预编译的SQL语句,执行效率高;
缺点:只能应用在SQL语句相同,但是参数不同的批处理里面;适用于在同一张表中进行批量数据的操作;
批处理中的 update() 方法
用批处理操作数据库,update() 方法返回的是一个数组,里面记录着每一条SQL语句影响的行数 ;
注意事项
在进行批处理的时候,一个批不要太大,否则会内存溢出,可以循环批处理;
备注:
mysql插入一千万条数据大概要花3小时,而oracle只需要花6分钟; 果然收费还是有收费的道理的 ;
(十七)使用JDBC进行批处理的更多相关文章
- JDBC的批处理操作三种方式 pstmt.addBatch()
package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import java.sql.Connection; import java ...
- JDBC进行批处理
转自 http://mousepc.iteye.com/blog/1131462 业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升 ...
- 使用JDBC进行批处理
在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...
- JavaWeb学习总结(十一)--JDBC之批处理
一.批处理的介绍 在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率.批处理只针对更新(增.删.改)语句,批 ...
- javaweb学习总结(三十六)——使用JDBC进行批处理
在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...
- JDBC的批处理操作三种方式
SQL批处理是JDBC性能优化的重要武器,批处理的用法有三种. package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import ...
- JDBC之批处理
JDBC之批处理 现在有这么一个需求,要求把2000条记录插入表中,如果使用java代码来操作,我们可以使用Statement或者PreparedStatement来实现,通过循环来把SQL语句一条又 ...
- JavaWeb学习笔记(十五)—— 使用JDBC进行批处理
一.什么是批处理 批处理就是一批一批的处理,而不是一个一个的处理! 当你有10条SQL语句要执行时,一次向服务器发送一条SQL语句,这么做效率上很差!处理的方案是使用批处理,即一次向服务器发送多条SQ ...
- JDBC进行批处理Batch
在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...
随机推荐
- 转义字符\'和\"的使用示例
/* 转义字符\'和\"的使用示例 */ #include <stdio.h> int main(void) { printf("关于字符串常量和字符常量.\n&quo ...
- CF1197B
CF1197B 题意: 出n个柱子,每个柱子一个圆盘,其半径各不相同,每次只能将柱子上只有一个圆盘的移到相邻位置,问能否全部移到一个柱子上. 解法: 思路题. 如果所有盘子都能移动到同一个柱子上,那么 ...
- 解决ScrollView中Recyclerview显示不全,滑动不流畅的问题
这个问题经常会碰到,看了下网上关于这个问题的解决方案,有很多都是复制粘贴的,并不能根本解决问题 比较有效的一种方案是在Recyclerview的外层套一个RelativeLayout 然后设置recy ...
- IE与其他浏览器兼容性问题总结
1.eval(idName) [问题描述]:IE.safari.Chrome浏览器下都可以使用eval(idName)或getElementById(idName)来取得id为idName的HTML对 ...
- An error occurred while starting a transaction on the provider connection. See the inner exception for details.
用EntityFramework循环操作数据时,报了如下错误 An error occurred while starting a transaction on the provider connec ...
- (main)贝叶斯统计 | 贝叶斯定理 | 贝叶斯推断 | 贝叶斯线性回归 | Bayes' Theorem
2019年08月31日更新 看了一篇发在NM上的文章才又明白了贝叶斯方法的重要性和普适性,结合目前最火的DL,会有意想不到的结果. 目前一些最直觉性的理解: 概率的核心就是可能性空间一定,三体世界不会 ...
- win系统动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数. 方法是:用 LoadLibrary 函数加载动态链接库到内存,用 Ge ...
- oracle-sql脚本
select * from dba_users; create tablespace kyc_coo; create user kyc_coo identified by "123456&q ...
- MySQL SSL配置(mysql5.7和mysql5.6)
专题一:mysql5.7上开启并配置ssl [root@mysqlmaster01 bin]# ./mysql_ssl_rsa_setup --datadir=/data/mysql_data1/ - ...
- css简单学习属性2---背景图片
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...