数据库批量更新

数据的批量更新

     项目中与数据库的交互越来越重要,很多的程序需要执行大量的INSERT语句,以便将数据填入到数据库表中,在JDBC 2中,可以使用批量更新的方法来提高性能。
在使用批量更新时,一个命令序列作为一批操作将同时被收集和保存(使用 DatabaseMetaData类中的supportsBatchUpdatas方法可以知道数据库是否支持这种特性)。

     在同一批中的命令可以是INSERT , UPDATE,DELETE 等操作,也可以是数据库定义命令,如CREATE TABLE ,DROP TABLE。
     不过,不能在批量处理中添加SELECT命令,原因是执行SELECT命令将返回结果集。

      Connection conn = DriverManager.getCommection(url,username,password);

      Statement stat=conn.createStatement();
     
      调用addBatch()方法,而不是executeUpdate()方法.

      String com = "CREATE TABLE ...";
      stat.addBatch(com);
     
      while(...)
       {
          com = "INSERT INTO ... VALUES("+...+")";
           stat.addBatch(com);
      }
      最后,提交整个批量更新语句:
     int[] counts = stat.executeBatch();

     调用executeBatch方法,将为所有已提交的命令返回一个记录数的数组。

     为了在批量模式下正确处理错误,必须将批量执行的操作视为单个事务。以便在失败时,将他回滚到批量操作之前的状态。

    
      首先,关闭自动提交模式,
      boolean autoCommit = conn.getAutoCommit();
      conn.setAutoCommit(false);
      然后收集批量操作,执行并提交该操作,
      Statement stat=conn.getStatement();
      ....
      stat.executeBatch();   
      conn.commit();
      conn.setAutoCommit(autoCommit);




猜你喜欢

转载自yinghuizhijia-yahoo-cn.iteye.com/blog/1327782