这是我封装的getConnect是从连接池中获取的链接,好像我可以顺利执行的次数根我的连接池的最大连接数有关系,连接数设大了就可以多执行一会,设小了就执行时间断了。就是批处理这块出问题,我项目中别的地方单语句都很好。
public static boolean executeBatch(String sql[], String errorMethodName) {
Connection conn=null;
Statement stat=null;
try {
conn = DbManager.getConnect();
conn.setAutoCommit(false);
stat = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
stat.clearBatch();
for (int i = 0; i < sql.length; i++) {
stat.addBatch(sql[i]);
}
int success[] = stat.executeBatch();
if (success != null) {
conn.commit();
if(stat!=null){
stat.close();
}
if(conn!=null){
conn.close();
}
return true;
} else {
conn.rollback();
if(stat!=null){
stat.close();
}
if(conn!=null){
conn.close();
}
return false;
}
} catch (Exception e) {
try {
conn.rollback();
if(stat!=null){
stat.close();
}
if(conn!=null){
conn.close();
}
return false;
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return false;
}
}
------解决方案--------------------
顶
------解决方案--------------------
stat = conn.createStatement();
stat.clearBatch();//去掉
///在exception里捕获异常并回滚