【发布时间】:2012-07-03 03:15:30
【问题描述】:
每次执行我的程序时,我都会执行 JDBC 批量插入(一次大约插入 1000 行)。但是我无法正确处理某些记录引发的异常。
假设 1000 条记录中的第 100 条记录由于无效数据或某个值的大小超过列大小而引发异常。一旦发生异常,剩余的记录不会被插入并且程序在两者之间失败。
我想要的是即使第 100 条记录抛出异常,剩余的插入应该在我的程序结束之前照常发生。
我无法理解如何实现这一点。请提出建议。
编辑:
这是我在应用中用于批量插入的示例代码。假设结果集有大约 1000 条记录。
PreparedStatement ps = null;
while(rs.next()){
//Retrieve the value and set it to a Prepared statement
String name = rs.getString("Name");
int age = rs.getInt("Age");
ps.setInt(1, age);
ps.setString(2, name);
//Finally invoke addBatch
ps.addBatch();
}
//Finally call the executeBatch method
ps.executeBatch();
如果第 100 条记录引发异常,那么我只想从第 100 条和第 1000 条记录触发该过程。有没有办法做到这一点,以便我可以从抛出异常向前的记录重新启动该过程,直到再次结束?如何做到这一点?
【问题讨论】:
标签: java sql oracle jdbc oracle10g