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

  JDBC实现批处理有两种方式:statement和preparedstatement

一、使用Statement完成批处理

  1、使用Statement对象添加要批量执行SQL语句,如下:

  1. CREATE TABLE `testbatch` (
  2. `id` int(11) NOT NULL,
  3. `name` varchar(20) DEFAULT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8

  2.测试代码

  1. public class jdbcBatch {
  2. @Test
  3. public void testJdbcBatchHandleByStatement(){
  4. Connection conn = null;
  5. Statement st = null;
  6. ResultSet rs = null;
  7. try{
  8. conn = JdbcUtils.getConnection();
  9. String sql1 = "insert into testbatch(id,name) values(1,'aaa')";
  10. String sql2 = "insert into testbatch(id,name) values(2,'bbb')";
  11. String sql3 = "insert into testbatch(id,name) values(3,'CCC')";
  12. String sql4 = "insert into testbatch(id,name) values(4,'DDD')";
  13. String sql5 = "update testbatch set name='gacl' where id=1";
  14. String sql6 = "insert into testbatch(id,name) values(5,'FFF')";
  15. String sql7 = "delete from testbatch where id=2";
  16. st = conn.createStatement();
  17. //添加要批量执行的SQL
  18. st.addBatch(sql1);
  19. st.addBatch(sql2);
  20. st.addBatch(sql3);
  21. st.addBatch(sql4);
  22. st.addBatch(sql5);
  23. st.addBatch(sql6);
  24. st.addBatch(sql7);
  25. //执行批处理SQL语句
  26. st.executeBatch();
  27. //清除批处理命令
  28. st.clearBatch();
  29. }catch (Exception e) {
  30. e.printStackTrace();
  31. }finally{
  32. JdbcUtils.release(conn, st, rs);
  33. }
  34. }
  35. }

  3.采用Statement.addBatch(sql)方式实现批处理的优缺点

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

  1. Insert into user(name,password) values('aa','111');
  2. Insert into user(name,password) values('bb','222');
  3. Insert into user(name,password) values('cc','333');
  4. Insert into user(name,password) values('dd','444');

二、使用PreparedStatement完成批处理

  1.使用PreparedStatement完成批处理范例,测试代码

  1. public class JdbcBatchPrepareStatement {
  2. @Test
  3. public void testJdbcBatchHandleByPrepareStatement(){
  4. long starttime = System.currentTimeMillis();
  5. Connection conn = null;
  6. PreparedStatement st = null;
  7. ResultSet rs = null;
  8.  
  9. try{
  10. conn = JdbcUtils.getConnection();
  11. String sql = "insert into testbatch(id,name) values(?,?)";
  12. st = conn.prepareStatement(sql);
  13. for(int i=6;i<10;i++){ //i=1000 2000
  14. st.setInt(1, i);
  15. st.setString(2, "aa" + i);
  16. st.addBatch();
  17. }
  18. st.executeBatch();
  19. st.clearBatch();
  20. }catch (Exception e) {
  21. e.printStackTrace();
  22. }finally{
  23. JdbcUtils.release(conn, st, rs);
  24. }
  25. long endtime = System.currentTimeMillis();
  26. System.out.println("程序花费时间:" + (endtime-starttime)/1000 + "秒!!");
  27. }
  28. }

  2.采用PreparedStatement.addBatch()方式实现批处理的优缺点

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

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

  1. jdbc 数据库批处理insert操作

    package blob; import java.sql.Connection; import java.sql.PreparedStatement; import jdbc.utils.*; // ...

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

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

  3. JDBC进行批处理

    转自 http://mousepc.iteye.com/blog/1131462 业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升 ...

  4. 使用JDBC进行批处理

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

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

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

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

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

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

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

  8. 批处理(Batch)---批处理脚本。

    批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件的扩展名为bat .目前比较常见的批 ...

  9. JDBC之批处理

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

随机推荐

  1. asp.net core 一个中小型项目实战的起手式——项目搭建与仓储模式下的持久层创建(1)

    常规的中小型项目搭建方式一般是三层架构加上mvc与webapi作为一个主要框架,再加上一些第三方库,例如orm框架(EF.SqlSugar.Dapper等),API文档工具(Swagger)这些的应用 ...

  2. n的阶乘 -牛客

    题目描述 输入一个整数n,输出n的阶乘(每组测试用例可能包含多组数据,请注意处理) 输入描述: 一个整数n(1<=n<=20) 输出描述: n的阶乘 解题思路 采用递归求解,也可以使用循环 ...

  3. Element UI系列:Select下拉框实现默认选择

    实现的主要关键点在于 v-mode 所绑定的值,必须是 options 数组中对应的 value 值

  4. android ——滑动菜单

    一.DrawerLayout是一个拥有两个子控件的布局,第一个子控件是主屏幕中显示的内容,第二个子控件是滑动菜单中显示的内容: <android.support.v4.widget.Drawer ...

  5. 【0812 | Day 13】闭包函数/装饰器/迭代器

    目录 闭包函数 无参装饰器 有参装饰器 迭代器 闭包函数 一.什么是闭包? 闭包指的是:函数内部函数对外部作用域而非全局作用域的引用. def outter(): x = 1 def inner(): ...

  6. MySQL-EXPLAIN执行计划字段解释

    做 MySQL 查询优化遇到明明建了索引查询仍然很慢,看这个 SQL 的执行计划,看它到底有没有用到索引,执行的具体情况.我们可以用 EXPLAIN 命令查看 SQL 的执行计划,SQL 优化的重要性 ...

  7. Python项目中的单元测试

    引入 单元测试负责对最小的软件设计单元(模块)进行验证,unittest是Python自带的单元测试框架. 单元测试与功能测试都是日常开发中必不可少的部分,本文演示了Python中unittest单元 ...

  8. Python 获取服务器的CPU个数

    在使用gunicorn时,需要设置workers, 例如: gunicorn --workers=3 app:app -b 0.0.0.0:9000 其中,worker的数量并不是越多越好,推荐值是C ...

  9. 搭建nuget 服务器

    前言 搭建nuget服务器,这是上家公司进行类库管理的方式,其实优点很明显, 1.代码保密 2.代码重复利用效率高,这样不管任何项目只要知道nuget服务器地址就能直接调用 3.可进行版本任意切换提高 ...

  10. 《Java 8 in Action》Chapter 1:为什么要关心Java 8

    自1998年 JDK 1.0(Java 1.0) 发布以来,Java 已经受到了学生.项目经理和程序员等一大批活跃用户的欢迎.这一语言极富活力,不断被用在大大小小的项目里.从 Java 1.1(199 ...