我创建了一个 PreparedStatement 并在 bactch 中添加了一些数据
PreparedStatement ps = conn.PreparedStatement("INSERT into table (a, b) values (?, ?)";
ps.setInt(1, 1);
ps.setInt(2, 2);
ps.addBatch
ps.setInt(1, 4);
ps.setInt(2, 5);
ps.addBatch
现在当我执行 ps 时。我得到了结果,现在可以说 ps 失败了,然后我想插入记录,而不是在批处理模式下一条一条。
如何提取准备好的语句,我可以得到大小,但不确定如何得到记录?
最佳答案
你能不能先一条条插入记录?如果您的 DBMS 支持事务——大多数现代的都支持——您可以将所有插入捆绑到一个原子事务中,并且对于数据库的其他用户来说,它看起来就像您一次性添加了它们(请参阅下面的伪代码)。
connection.setAutoCommit(false);
try{
insert(1,2);
}
catch(Exception e){
System.out.println("1, 2 didn't work");
}
try{
insert(4,5);
}
catch(Exception e){
System.out.println("4, 5 didn't work");
}
connection.commit();
关于java - 批量更新失败 - 回滚操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3341447/