zoukankan      html  css  js  c++  java
  • [转]使用JDBC进行批处理

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

    二、
    •实现批处理的第二种方式:
    •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();

    •采用PreparedStatement.addBatch()实现批处理
    •优点:发送的是预编译后的SQL语句,执行效率高。
    •缺点:只能应用在SQL语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。
     
     
  • 相关阅读:
    Ubuntu下安装、激活并配置Pycharm
    高分辨率下firefox字体和界面自动放大的问题
    Java如何根据IP获取当前定位
    WebSocket介绍和一个简单的聊天室
    java注解处理
    TCP/IP协议三次握手与四次握手流程解析
    mybatis如何做分页处理
    xshell学习笔记
    正交表生成工具 PICT 成对组合覆盖 收藏
    Ready api groovy script 参数化
  • 原文地址:https://www.cnblogs.com/codeskilla/p/5204961.html
Copyright © 2011-2022 走看看