我想读取一个txt文件,该文件在java程序中有oracle insert语句并作为批处理执行,如果批处理中的任何记录失败,我如何才能知道特定的insert语句只是失败了。< / p>
对于Ex.if我在文件中有1000条记录,659条记录在插入时失败, 我如何才能知道在执行dbb update时失败的659记录。是否有任何其他过程可以让我知道。
答案 0 :(得分:2)
有两种方法可以处理上述情况,无论是检入Java代码还是编写过程
Java代码:这将加载所有内容或回滚整个批处理。
updateResult = preparedStatement.executeBatch(); checkSuccessfulUpdates(updateResult);
public static void checkSuccessfulUpdates(int [] updateCounts)抛出异常{ for(int i:updateCounts){ if(i == Statement.EXECUTE_FAILED){ 抛出新的异常(“并非所有行都已更新。回滚整批”); } } }
编写SQL过程
将自定义对象中的整个数据发送到过程,按记录1加1,在循环内处理异常,错误加载临时表中的失败记录。