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 || 点返回首页

原文地址:https://www.cnblogs.com/aeon/p/7838441.html