1. 批量处理JDBC语句,提高处理速度。
  2. 当需要成批的的插入或更新记录时可以采用java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理,通常情况下比单独提交处理更有效率。
  3. 批量处理的方法:
    • ——addBatch(String):添加需要批量处理的SQL语句或是参数。
    • ——executeBatch():执行批量处理语句。

      *通常我们会遇到两种批量执行SQL语句的情况:
    • ——多条SQL语句批量处理
    • ——一条SQL语句的批量传参
  4. 以下三个方法使用了三种批量处理方式以及使用时间分别为:

    *Statement使用时间:18271毫秒

    *PreparedStatement使用时间:13808毫秒

    *JDBC批处理:2046毫秒
  5. 实例
public class Volume_11 {

    /**
* 1.向Sql Server中表customers插入100000条记录。
* 使用statement,花费时间:18271毫秒
*/
@Test
public void testBatchWithStatement(){
Connection conn = null;
Statement statement = null;
String sql = null;
try {
conn = TestTools.getConnection();
//事务开始
TestTools.beginTx(conn);
statement = conn.createStatement();
//开始计时
long begin = System.currentTimeMillis();
for(int i = 0; i < 100000; i++){
sql = "INSERT INTO customers VALUES('"+
(i+1)+"','name_"+i+"','29-6月-13')";
statement.executeUpdate(sql);
}
//计时结束
long end = System.currentTimeMillis();
System.out.println("时间:"+(end - begin)); //事务提交
TestTools.commit(conn);
} catch (Exception e) {
e.printStackTrace();
//事务回滚
TestTools.rollback(conn);
}finally{
TestTools.release(statement, conn);
}
} /**
* 2.向Sql Server中表customers插入100000条记录。
* 使用Preparedstatement,花费时间:13808毫秒
*/
@Test
public void testBatchWithPreparedstatament(){
Connection conn = null;
PreparedStatement preparedstatement = null;
String sql = null;
try {
conn = TestTools.getConnection();
//事务开始
TestTools.beginTx(conn);
sql = "INSERT INTO customers VALUES(?,?,?)";
preparedstatement = conn.prepareStatement(sql);
Date date = new Date(new java.util.Date().getTime());
//开始计时
long begin = System.currentTimeMillis();
for(int i = 0; i < 100000; i++){
preparedstatement.setInt(1, (i+1));
preparedstatement.setString(2, "name_"+i);
preparedstatement.setDate(3, date); preparedstatement.executeUpdate();
}
//计时结束
long end = System.currentTimeMillis();
System.out.println("时间:"+(end - begin)); //事务提交
TestTools.commit(conn);
} catch (Exception e) {
e.printStackTrace();
//事务回滚
TestTools.rollback(conn);
}finally{
TestTools.release(preparedstatement, conn);
}
}
/**
* 3.向Sql Server中表customers插入100000条记录。
* 使用JDBC批处理,花费时间:2046毫秒
*/
@Test
public void testBatch(){
Connection conn = null;
PreparedStatement preparedstatement = null;
String sql = null;
try {
conn = TestTools.getConnection();
//事务开始
TestTools.beginTx(conn);
sql = "INSERT INTO customers VALUES(?,?,?)";
preparedstatement = conn.prepareStatement(sql);
Date date = new Date(new java.util.Date().getTime());
//开始计时
long begin = System.currentTimeMillis();
for(int i = 0; i < 100000; i++){
preparedstatement.setInt(1, (i+1));
preparedstatement.setString(2, "name_"+i);
preparedstatement.setDate(3, date); //"积攒"300条记录之后一块提交到数据库
preparedstatement.addBatch();
if((i + 1) % 300 == 0){
preparedstatement.executeBatch();//执行提交
preparedstatement.clearBatch();//清除积攒的记录
}
}
//若总条数不是积攒数的整数倍,则需要额外的在执行一次,比如总条数400,积攒数300,则执行一次之后还有100
//条记录,100%300不等于0无法提交,所以需要再判断一下是否需要再提交一次。
if(100000 % 300 != 0){
preparedstatement.executeBatch();//执行提交
preparedstatement.clearBatch();//清除积攒的记录
}
//计时结束
long end = System.currentTimeMillis();
System.out.println("时间:"+(end - begin)); //事务提交
TestTools.commit(conn);
} catch (Exception e) {
e.printStackTrace();
//事务回滚
TestTools.rollback(conn);
}finally{
TestTools.release(preparedstatement, conn);
}
}
}

JDBC(10)—批处理的更多相关文章

  1. JDBC进行批处理

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

  2. 使用JDBC进行批处理

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

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

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

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

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

  5. JDBC进行批处理Batch

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

  6. 四.使用JDBC进行批处理操作

    1 create table testbatch 2 ( 3 id int primary key, 4 name varchar(20) 5 ); 在实际的项目开发中,有时候需要向数据库发送一批SQ ...

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

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

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

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

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

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

  10. JDBC之批处理

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

随机推荐

  1. Chino的数列

    题解: 一道练代码能力的题目.. 首先很显然他是一道平衡树裸题 第5个操作是势能分析维护最大值最小值就可以了 另外设置虚点和noip2017队列那题一样(不过我只写过线段树) 具体细节: 1.内存池, ...

  2. Sql与C#中日期格式转换总结

    SQL中的转换方法: 一.将string转换为datetime,主要是使用Convert方法, 方法,Convert(datetime [ ( length ) ] , expression, [st ...

  3. python全栈开发day82-modelForm

    1.jsonp内容 from django.shortcuts import render # Create your views here. def upload(request): if requ ...

  4. Android 开发随笔

    1 获取屏幕尺寸 WindowManager wm = this.getWindowManager();viewWidth = wm.getDefaultDisplay().getWidth();vi ...

  5. Codeforces 887D Ratings and Reality Shows

    Ratings and Reality Shows 参加talk show的时间肯定是在某个t[ i ]的后一秒, 枚举一下就好了. #include<bits/stdc++.h> #de ...

  6. Python 面向对象5 多态

    一.多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作,简单的说就是一句话:允许将 ...

  7. ConcurrentModificationException(并发修改异常)的分析

    1)介绍 并发修改ConcurrentModificationException错误是开发中一个常见错误,多发生在对一个Collection边遍历边做影响size变化的操作中,下面以ArrayList ...

  8. Python scrapy爬虫学习笔记01

    1.scrapy 新建项目 scrapy startproject 项目名称 2.spiders编写(以爬取163北京新闻为例) 此例中用到了scrapy的Itemloader机制,itemloade ...

  9. P1330 封锁阳光大学 DFS

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  10. themeleaf引入公共页面

    <div th:include="/top :: html"></div>//引用公共页面 <div th:replace="head&qu ...