zoukankan      html  css  js  c++  java
  • JDBC批处理

    当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。

    1、第一种方式

    
    
     1 package com.demo;
     2 
     3 import java.sql.Connection;
     4 import java.sql.PreparedStatement;
     5 import java.sql.ResultSet;
     6 import java.sql.SQLException;
     7 import java.sql.Statement;
     8 
     9 import org.junit.Test;
    10 
    11 import com.utils.DButils;
    12 
    13 //jdbc批处理
    14 public class Demo3 {
    15     //批处理第一种方式
    16     @Test
    17     public void test1() throws SQLException{
    18         Connection con = null;
    19         Statement st = null;
    20         ResultSet result = null;
    21         
    22         try{
    23             con = DButils.getConnection();
    24             String sql1 = "insert into testbatch(id,name) values('1','aaaa')";
    25             String sql2 = "update testbatch set name='bbbb' where id=1";
    26             st = con.createStatement();
    27             st.addBatch(sql1);//Statement维护了一个list集合
    28             st.addBatch(sql2);
    29             
    30             //返回一个int[1,1]数组代表每条sql语句影响几行数组
    31             st.executeBatch();
    32             st.clearBatch();
    33             
    34         }finally{
    35             DButils.release(con, st, result);
    36         }
    37     }
    
    
    
     

     

    2、第二种方式

     1 //实现批处理的第二种方式  适用于批量更新和插入
     2     @Test
     3     public void test2() throws SQLException{
     4         Connection con = null;
     5         PreparedStatement st = null;
     6         ResultSet result = null;
     7         long startTime = System.currentTimeMillis();
     8         try{
     9             con = DButils.getConnection();
    10             String sql = "insert into testbatch(id,name) values(?,?)";
    11             st = con.prepareStatement(sql);
    12             for(int i=1;i<10000;i++){
    13                 st.setString(1,i+"");
    14                 st.setString(2,"aa"+i);
    15                 st.addBatch();
    16             }
    17             st.executeBatch();
    18             st.clearBatch();    
    19             
    20         }finally{
    21             DButils.release(con, st, result);
    22         }
    23         long endTime = System.currentTimeMillis();
    24         System.out.println("花费时间:"+(endTime-startTime)/1000+"秒");
    25     }
    26 }
  • 相关阅读:
    多线程交替打印示例
    单列集合框架体系Collection
    同域名下,两个网站通过cookie共享登录注册功能大概思路。
    CSS 隐藏滚动条
    Vue3--组件间传值
    TypeScript--类(class)
    TypeScript--泛型(generic)
    理解LDAP与LDAP注入
    CRLF injection 简单总结
    pigctf期末测评
  • 原文地址:https://www.cnblogs.com/niuchuangfeng/p/9174467.html
Copyright © 2011-2022 走看看