• jdbc批处理


    注意事项:

      1、因为jdbc默认事务提交是一条一提交,那么我们批处理的时候首先要设置事务的提交方式为手动提交(原因:你插入20000条数据默认要提交20000次?我们设置手动一次提交即可)

      2、批处理应该使用statement

      3、一定要执行批处理

     1 package edu.test;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.PreparedStatement;
     6 import java.sql.ResultSet;
     7 import java.sql.SQLException;
     8 import java.sql.Statement;
     9 /**
    10  * @author lzj
    11  * @create 2017年11月14日 下午7:54:34
    12  * @describe
    13  */
    14 public class TestJdbc {
    15 
    16     /**
    17      * at 2017年11月14日 下午7:54:34 by lzj
    18      * @Parameters1
    19      * @Returns void
    20      */
    21     public static void main(String[] args) {
    22         Connection conn = null;
    23         Statement stmt=null;
    24         try {
    25             //mysql -hlocalhost -uroot -plzj_aeon+
    26             Class.forName("com.mysql.jdbc.Driver");
    27             long start=System.currentTimeMillis();
    28             //此处数据库建立远程连接(内部采用socket建立远程连接)比较耗时、一般开发中我们采用连接池方式、此处只是为了简单的一个示例
    29             conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "lzj_aeon+");
    30             long end=System.currentTimeMillis();
    31             System.out.println(conn);
    32             System.out.println("数据库建立连接耗时:"+(end-start)+"毫秒!");
    33             conn.setAutoCommit(false);//设置次数事务提交方式为手动提交
    34             stmt=conn.createStatement();
    35             int i=0;
    36             for(i=0;i<200;i++) {
    37                 stmt.addBatch("insert into student(id,name) values ("+(i+1)+",'lzj"+(i+1)+"')");
    38                 i+=1;
    39             }
    40             stmt.executeBatch();//执行批处理...此处一定要执行批处理!
    41             conn.commit();//手动提交
    42             long end1=System.currentTimeMillis();
    43             System.out.println("批量插入"+i+"条数据耗时(毫秒):"+(end1-end));
    44         } catch (ClassNotFoundException e) {
    45             e.printStackTrace();
    46         } catch (SQLException e) {
    47             e.printStackTrace();
    48         }finally{
    49                 try {
    50                     if(stmt!=null) {
    51                         stmt.close();
    52                     }
    53                 } catch (Exception e2) {
    54                     System.out.println("stmt流关闭异常!");
    55                     e2.printStackTrace();
    56                 }
    57                 try {
    58                     if(conn!=null) { conn.close();}
    59                 } catch (SQLException e3) {
    60                     System.out.println("conn流关闭异常!");
    61                     e3.printStackTrace();
    62                 }
    63                 
    64                 
    65         }
    66 
    67     }
    68 
    69 }

    运行结果截图:

    数据库截图:

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    -Dmaven.test.skip=true 和 -DskipTests
    mysql 生成指定范围随机数
    Delphi 6 保存窗体设置
    Sql server left join,right join和inner join的比较
    Mysql配置文件my.ini详解
    网络游戏MMORPG服务器架构
    彻底删除SVN版本库中部分文件或文件夹
    高负载高并发应用 参考索引 地址
    Linux计划任务入门详解
    Linux下SVN的三种备份方式
  • 原文地址:https://www.cnblogs.com/aeon/p/7838441.html
Copyright © 2020-2023  润新知