转自 http://mousepc.iteye.com/blog/1131462

业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。

实现批处理有两种方式

第一种方式:
  •Statement.addBatch(sql)
  执行批处理SQL语句
  •executeBatch()方法:执行批处理命令
  •clearBatch()方法:清除批处理命令

 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();

 } finally{

   JdbcUtil.free(conn, st, rs);

 }
采用Statement.addBatch(sql)方式实现批处理:
  •优点:可以向数据库发送多条不同的SQL语句。
  •缺点:
  •SQL语句没有预编译。
  •当向数据库发送多条语句相同,但仅参数不同的SQL语句时,需重复写上很多条SQL语句。例如:

  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’);

l实现批处理的第二种方式:
  •PreparedStatement.addBatch()
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){//每一千条语句执行一次批处理

    st.executeBatch();

    st.clearBatch();

  }

}

st.executeBatch();//最后还要执行一次,因为总数可能不是1000的整数倍

采用PreparedStatement.addBatch()实现批处理

  •优点:发送的是预编译后的SQL语句,执行效率高。
  •缺点:只能应用在SQL语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。

JDBC进行批处理的更多相关文章

  1. JDBC的批处理操作三种方式 pstmt.addBatch()

    package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import java.sql.Connection; import java ...

  2. 使用JDBC进行批处理

    在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...

  3. JavaWeb学习总结(十一)--JDBC之批处理

    一.批处理的介绍 在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率.批处理只针对更新(增.删.改)语句,批 ...

  4. javaweb学习总结(三十六)——使用JDBC进行批处理

    在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...

  5. JDBC的批处理操作三种方式

    SQL批处理是JDBC性能优化的重要武器,批处理的用法有三种. package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import ...

  6. JDBC之批处理

    JDBC之批处理 现在有这么一个需求,要求把2000条记录插入表中,如果使用java代码来操作,我们可以使用Statement或者PreparedStatement来实现,通过循环来把SQL语句一条又 ...

  7. JavaWeb学习笔记(十五)—— 使用JDBC进行批处理

    一.什么是批处理 批处理就是一批一批的处理,而不是一个一个的处理! 当你有10条SQL语句要执行时,一次向服务器发送一条SQL语句,这么做效率上很差!处理的方案是使用批处理,即一次向服务器发送多条SQ ...

  8. JDBC进行批处理Batch

    在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...

  9. (十七)使用JDBC进行批处理

    目录 业务场景: 第一种方式 第二种方式 批处理中的 update() 方法 注意事项 备注: 业务场景: 当需要向数据库中发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的 ...

随机推荐

  1. JavaScript中的eval()函数

    和其他很多解释性语言一样,JavaScript同样可以解释运行由JavaScript源代码组成的字符串,并产生一个值.JavaScript通过全局函数eval()来完成这个工作. eval(“1+2” ...

  2. 收集Github上的iOS控件和开发资料

    文章来源:http://www.mobile-open.com/2015/85017.html 动画 awesome-ios-animation 收集了iOS平台下比较主流炫酷的几款动画框架 RCTR ...

  3. IIS+PHP配置一次成功无错误版

    1.首先去PHP官网下载php的压缩包(.zip),由于web服务器是IIS所以尽量使用线程不安全版本的,我下载的是: VC11 x86 Non Thread Safe (2015-May-14 18 ...

  4. rails常用验证方法 (转)

    validates_presence_of       :login,  :message => "用户名不能为空!" validates_length_of         ...

  5. CSS3-Media Query 基础

    一.常见的属性: device-width , device-height 屏幕宽高 width , height 渲染窗口宽高 orientation 设备方向 resolution 设备分辨率 二 ...

  6. [Java Basics] Reflection

    For every type of object, the Java virtual machine instantiates an immutable instance of java.lang.C ...

  7. 【Python】实现5!+4!+3!+2!+1!

    #!/usr/bin/env python #-*- coding:utf-8 -*- def factorial_add(n): empty_list=[] #定义一个空列表 for i in ma ...

  8. 解决ubuntu下安装phpmyadmin访问不了的问题

    在/etc/apache2/sites-available下有个文件 000-default.conf 文件为只读,需要sudo 命令修改,  把DocumentRoot /var/www/html ...

  9. C语言基本数据类型

    一.数据类型与“模子” short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过 ...

  10. LEETCODE —— Single Number

    Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...