java - 批量更新失败 - 回滚操作

标签 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 失败了,然后我想插入记录,而不是在批处理模式下一条一条。

如何提取准备好的语句,我可以得到大小,但不确定如何得到记录?

最佳答案

你能不能先一条条插入记录?如果您的 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/

相关文章:

sql - mysql 选择所有表名,除了

iphone - 如何在 iPhone 中为 SQLite 编写准备好的语句

java - 使用 ANTLR 为 java 源代码生成抽象语法树

java - ArtifactTransferException : Failure to transfer org. springframework.data :spring-data-jpa:jar:1. 7.0.RELEASE

php - While 循环显示不同行而不是同一行

JavaScript 从数据库中检索数据

php - 如何使用 Prepared Statements 检查是否有结果

java - 带有 setBigDecimal 参数的 Java preparedStatement 引发 ORA-03115

java - 如何从长值中获取更多有效数字来打印?

java - ActionListener 和 MouseListener 冲突