批量更新失败 - 回滚操作

时间:2010-07-27 07:18:39

标签: java mysql prepared-statement

我已经创建了一个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失败了,然后我想逐个插入记录而不是批处理模式。

如何提取准备好的语句,我可以获得大小,但不知道如何获取记录?

1 个答案:

答案 0 :(得分:1)

首先,您是否可以逐个插入记录?如果您的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();