博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java批处理
阅读量:4181 次
发布时间:2019-05-26

本文共 1418 字,大约阅读时间需要 4 分钟。

批处理

JDBC对批处理的操作,首先简单说一下JDBC操作sql语句的简单机制。
JDBC执行数据库操作语句,首先需要将sql语句打包成为网络字节流,传递给数据库,数据库经过解包,然后编译sql语句,最后执行,然后将结果通过字节流的形式返回给JDBC API,简单的来说大致分为以下几点:
Ø JDBC打包sql语句;
Ø 发送字节流至数据库;
Ø 数据库解包;
Ø 检查sql语法,编译sql;
Ø 执行sql语句;
Ø 将sql语句返回给JDBC 接口;


如果我们需要插入成千上万甚至更多的数据库,如果采用传统的方式,势必每次都需要经历上述几个步骤,其中执行多少次sql语句就需要进行多少次通讯,网络数据通讯的开销也是一个很耗时的操作步骤,怎样才能减少网络的操作次数呢?我们可否将所有的需要执行的sql语句一次性传递给数据库,然后再将结果返回回来呢,这样不就减少了网络层的开销么?基于这样的原因JDBC API 提供了一个批处理的机制,方便我们的操作.

举例说明:


public class Test4 {

public static void main(String[] args) throws SQLException {
DBHelper db=new DBHelper();
long starttime=System.currentTimeMillis();
String sql=”“;
for( int i=2;i<1000;i++){
sql=”insert into tuser values( ?,’a’)”;
List params=new ArrayList();
params.add( i +”“);
db.doUpdate(sql, params);
}
long endtime=System.currentTimeMillis();
System.out.println( endtime-starttime );
}
}


结果:非常耗时间 ,而且语句过多会导致程序崩溃

下面看看使用了批处理的例子:
public class Test5 {

public static void main(String[] args) throws SQLException {    DBHelper db=new DBHelper();    Connection con=db.getCon();     String sql="insert into tuser values( ?,?)";     PreparedStatement pstmt=con.prepareStatement(sql);      for(  int i=1;i<100000;i++){         pstmt.setString( 1,i+"");         pstmt.setString(2, "a"+i);         pstmt.addBatch();//添加一次预定义参数         if(   i%1000==0){             int [] r=pstmt.executeBatch();   //批量执行预定义SQL  这个返回值里面存的是每条语句执行的结果.          }     }    pstmt.close();    con.close();}

}

转载地址:http://xyhai.baihongyu.com/

你可能感兴趣的文章
【Java并发编程实战】——Java内存模型与线程
查看>>
Java复制文件的4种方式
查看>>
mysql的JDBC连接工具类
查看>>
利用多线程(用到原子类AtomicInteger)往数据库批量插入大量数据
查看>>
多个线程操作数组
查看>>
定长线程池的应用
查看>>
ArrayBlockingQueue的简单使用
查看>>
Git 常用命令总结(一)
查看>>
Git 常用命令总结(二)
查看>>
JAVA 并发——synchronized的分析
查看>>
Echarts——使用 dataset 管理数据
查看>>
DES 加解密工具类
查看>>
SpringBoot多模块项目实践(Multi-Module)
查看>>
第一篇: 服务的注册与发现Eureka(Greenwich版)
查看>>
第二篇: 服务消费者(rest+ribbon)(Greenwich版本)
查看>>
第三篇: 服务消费者(Feign)(Greenwich版本)
查看>>
获取客户的真实IP地址
查看>>
第四篇: 熔断器(Ribbon+Feign)(Greenwich版本)
查看>>
Linux的常用命令(一)
查看>>
Linux的常用命令(二)
查看>>