loving863 发表于 2013-1-27 05:12:35

Java JDBC 批处理的应用

Java JDBC 批处理的应用
public boolean executebatchTask(Collection c)
throws SQLException
{
boolean result = false;
boolean autoCommit = false;
Iterator ir = c.iterator();
String sql = null;
try
{
   if (conn == null || conn.isClosed())//连接关闭,取得数据库连接
   {try
   {
   conn = getConnection();
   }
   catch (Exception se)
   {
    log.error("Conn Err:" + se.toString());
   }}
   autoCommit = conn.getAutoCommit();
   conn.setAutoCommit(false);
   stmt = conn.createStatement();
   for (int i=1; ir.hasNext(); i++,stmt.addBatch(sql))
   {
    sql = (String)ir.next();
    log.debug("NO "+i+" :"+sql);
   }

   try
   {
    stmt.executeBatch();
    conn.commit();
    conn.setAutoCommit(autoCommit);
    result = true;
   }
   catch (BatchUpdateException buex)
   {
    buex.printStackTrace();
    conn.rollback();
    conn.setAutoCommit(autoCommit);
    stmt.clearBatch();
   }
}
catch (Exception ex)
{
   ex.printStackTrace();
   log.error("批处理中出现错误:" + ex.toString());
}
return result;
}

这个方法非常有用,当执行出现错误,会自动rollback数据!
页: [1]
查看完整版本: Java JDBC 批处理的应用