JDBC的批处理操作
生活随笔
收集整理的這篇文章主要介紹了
JDBC的批处理操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是批處理
之前進行JDBC的操作的時候,都是一條SQL語句執行。現在如果使用批處理,可以將一批SQL一起執行。
批處理基本使用
@Test/*** 批處理基本操作*/public void demo1(){Connection conn = null;Statement stmt = null;try{// 獲得連接:conn = JDBCUtils.getConnection();// 創建執行批處理對象:stmt = conn.createStatement();// 編寫一批SQL語句:String sql1 = "create database test1";String sql2 = "use test1";String sql3 = "create table user(id int primary key auto_increment,name varchar(20))";String sql4 = "insert into user values (null,'aaa')";String sql5 = "insert into user values (null,'bbb')";String sql6 = "insert into user values (null,'ccc')";String sql7 = "update user set name = 'mmm' where id = 2";String sql8 = "delete from user where id = 1";// 添加到批處理stmt.addBatch(sql1);stmt.addBatch(sql2);stmt.addBatch(sql3);stmt.addBatch(sql4);stmt.addBatch(sql5);stmt.addBatch(sql6);stmt.addBatch(sql7);stmt.addBatch(sql8);// 執行批處理:stmt.executeBatch();}catch(Exception e){e.printStackTrace();}finally{JDBCUtils.release(stmt, conn);}}批量插入(使用PreparedStatement)
@Test/*** 批量插入記錄:* * 默認情況下MySQL批處理沒有開啟的,需要在url后面拼接一個參數即可。*/public void demo2(){// 記錄開始時間:long begin = System.currentTimeMillis();Connection conn = null;PreparedStatement pstmt = null;try{// 獲得連接:conn = JDBCUtils.getConnection();// 編寫SQL語句:String sql = "insert into user values (null,?)";// 預編譯SQL:pstmt = conn.prepareStatement(sql);for(int i=1;i<=10000;i++){pstmt.setString(1, "name"+i);// 添加到批處理pstmt.addBatch();// 注意問題:// 執行批處理if(i % 1000 == 0){// 執行批處理:pstmt.executeBatch();// 清空批處理:pstmt.clearBatch();}}}catch(Exception e){e.printStackTrace();}finally{JDBCUtils.release(pstmt, conn);}long end = System.currentTimeMillis();System.out.println((end-begin));}?
總結
以上是生活随笔為你收集整理的JDBC的批处理操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDBC的CRUD操作之Prepared
- 下一篇: 深入浅出Paxos分布式一致性算法