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]