JDBC批处理
JDBC實現批處理有兩種方式:statement和preparedstatement
先比較一下兩種方式的批處理:
1.采用Statement.addBatch(sql)方式實現批處理的優缺點
采用Statement.addBatch(sql)方式實現批處理:
優點:可以向數據庫發送多條不同的SQL語句。
缺點:SQL語句沒有預編譯。
當向數據庫發送多條語句相同,但僅參數不同的SQL語句時,需重復寫上很多條SQL語句。
2.采用PreparedStatement.addBatch()方式實現批處理的優缺點
采用PreparedStatement.addBatch()實現批處理
優點:發送的是預編譯后的SQL語句,執行效率高。
缺點:只能應用在SQL語句相同,但參數不同的批處理中。因此此種形式的批處理經常用于在同一個表中批量插入數據,或批量更新表的數據。
下面具體介紹一下:
一.使用Statement完成批處理
1.使用Statement對象添加要批量執行SQL語句,如下:
Statement.addBatch(sql1); Statement.addBatch(sql2); Statement.addBatch(sql3);2、執行批處理SQL語句:Statement.executeBatch();
3、清除批處理命令:Statement.clearBatch();
1.1 使用Statement完成批處理范例
public void testJdbcBatchHandleByStatement(){Connection conn = null;Statement st = null;ResultSet rs = null;try{conn = JdbcUtils.getConnection();st = conn.createStatement();//添加要批量執行的SQLst.addBatch(sql1);st.addBatch(sql2);st.addBatch(sql3);st.addBatch(sql4);st.addBatch(sql5);st.addBatch(sql6);st.addBatch(sql7);//執行批處理SQL語句st.executeBatch();}catch (Exception e) {conn.rollback();e.printStackTrace();}finally{//清除批處理命令st.clearBatch();JdbcUtils.release(conn, st, rs);}}二、使用PreparedStatement完成批處理
1.PerparedStatement在conn.prepareStatement(sql); 的時候需要將sql直接傳入。
2.添加批處理: pst.addBatch();
2.1 使用PreparedStatement完成批處理范例
public void testJdbcBatchHandleByPrepareStatement(){long starttime = System.currentTimeMillis();Connection conn = null;PreparedStatement pst = null;ResultSet rs = null;try{conn = JdbcUtils.getConnection();String sql = "insert into testbatch(id,name) values(?,?)";pst = conn.prepareStatement(sql);for(int i=1;i<1000008;i++){ //i=1000 2000pst.setInt(1, i);pst.setString(2, "aa" + i);pst.addBatch();if(i%1000==0){pst.executeBatch();pst.clearBatch();}}pst.executeBatch();}catch (Exception e) {e.printStackTrace();}finally{JdbcUtils.release(conn, pst, rs);}參考文章
總結
- 上一篇: 鱼泡网怎么样(怎样区分青鱼)
- 下一篇: Idea debug时报错:Comman