executeBatch()将抛出两个异常SQLException和BatchUpdateException。需要有关如何处理此异常的帮助。
我们正在为分布式环境执行900批量限制和150个提交限制。仅处理了唯一的BatchUpdateException。以下是代码段。有人可以指导我们是否需要捕获SQLException。如果未捕获SQLException,结果是什么。
抛出: SQLException - 如果发生数据库访问错误,则在已关闭的Statement上调用此方法,或者驱动程序不支持批处理语句。 ---这句话意味着什么。
} catch (BatchUpdateException be) {
status = "failure";
errorDesc = "BatchUpdateException";
errorCode = "-1";
checkpoint = "12";
log.debug(DealerId + "->BatchException be:" + be + ", checkpoint: " + checkpoint
+ ",con: " + con + ",db2con: " + db2Con);
int[] updateStatus = be.getUpdateCounts();
if (updateStatus != null) {
ArrayList<String> failedList = new ArrayList<String>();
try {
verifyUpdateCount(updateStatus, failedList, batchQueryList, queryList);
} catch (Exception e) {
if (failedList.size() > 0) {
log.debug(DealerId + "->updateStatus Exception queryList size:"
+ queryList.size());
queryList.clear();
queryList.addAll(failedList);
}
log.debug(DealerId + "->updateStatus Exception e:" + e + ", checkpoint: "
+ checkpoint + "con: " + con + "db2con: " + db2Con);
}
}
break END;
} finally {
try {
log.debug("norecords:" + noRecords);
if (!noRecords) {
closeStatements(ps, rs, rsShdw, db2Ps, stShdw);
}
} catch (Exception e) {
printCheckpoint(queryList, con, db2Con, "closeStatements Exception e: ", e,
checkpoint);
}
}
答案 0 :(得分:0)
抛出:SQLException - 如果发生数据库访问错误,则在已关闭的Statement上调用此方法,或者驱动程序不支持批处理语句。 ---这句话意味着什么。
我不知道它是否比这更简单。你不明白哪一部分?
它表示该方法在以下某种情况下抛出SQLException
: