数据的批量更新
项目中与数据库的交互越来越重要,很多的程序需要执行大量的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
今日推荐
周排行