转自 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. Objective-C 与 C++ 的异同

    stackflow 上有同学提问"C++ 与 Objective-C 有什么异同?"楼下的提供的两个资料挺不错的. 其一是: Pierre Chatelier 写的 <Fro ...

  2. eclipse 执行out.request()方法提示out cannot be resolved

    添加代码:PrintWriter out = response.getWriter(); 支持中文:response.setContentType("text/html;charset=ut ...

  3. MySql指令集

    http://blog.csdn.net/cl05300629/article/details/9464007

  4. 关于一些学习html和css的笔记

    一.Html简介 全写: HyperText Mark-up Language  译名: 超文本标识语言  简释:一种为普通文件中某些字句加上标示的语言,其目的在于运用标签(tag)使文件 达到预期的 ...

  5. 网站后台调用winform MessageLoopApartment

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. marquee|各种文字滚动代码(适用公告)

    marquee|各种文字滚动代码(适用公告)  

  7. 浏览器兼容 copyToClipboard("拷贝内容")

    function copyToClipboard(txt) { if (window.clipboardData) { window.clipboardData.clearData(); clipbo ...

  8. Context的使用(转)

    1.Context概念 Context,相信不管是第一天开发Android,还是开发Android的各种老鸟,对于Context的使用一定不陌生~~你在加载资源.启动一个新的Activity.获取系统 ...

  9. 重新安装配置ubuntu的引导菜单

     查看分区挂在情况,找到ubuntu所在分区(boot)$sudo fdisk   -l   卸载isodevice镜像设备所在盘分区(boot) $sudo  umount  -l  /isodev ...

  10. MetaPhlAn 2:宏基因组进化分析

    描述 MetaPhlAn是分析从物种水平分辨率宏基因组鸟枪法测序数据的微生物群落(细菌,古细菌,真核细胞和病毒)的组成的计算工具.从版本2.0,MetaPhlAn还能够确定具体的菌株(在将样品含有先前 ...