代码改变世界

java批量执行sql语句

2013-03-18 20:25  hduhans  阅读(2153)  评论(0)    收藏  举报
package day2;
import java.sql.*;
public class BatchDemo {

  /**
   * @param args
   */
  public static void main(String[] args) {
    batch();
  }
  /**
   * 向一个数据表temp_ning中插入100条记录
   * for (int i = 1; i <= 100; i++)(
   *     insert into temp_ning values(i);
   * }
   */
  public static void batch(){
    String sql = "insert into temp_ning values(?)";
    Connection conn = ConnectionUtils.getConnection();
    PreparedStatement stmt = null;
    try{
      conn.setAutoCommit(false);//关闭JDBC的自动提交
      stmt = conn.prepareStatement(sql);
      for(int i = 101; i <= 205; i++){
        stmt.setInt(1, i);//insert into temp_ning values(1);
        stmt.addBatch();//上一条赋值后的insert语句加入批处理列表
        if (i % 10 == 0){ //每10条处理一次
          stmt.executeBatch();
          stmt.clearBatch();
        }
      }
      //如果最后不足10条
      stmt.executeBatch();//批量执行列表中的sql语句
      
      conn.commit();//最后一起提交
      conn.setAutoCommit(true);
    }catch(Exception e){
      try {
        conn.rollback();
      } catch (SQLException e1) {
        e1.printStackTrace();
      }
      e.printStackTrace();
    }finally{
      ConnectionUtils.close(stmt);
      ConnectionUtils.close(conn);
    }
   
  }

}