使用 PreparedStatement 进行批处理
Posted
技术标签:
【中文标题】使用 PreparedStatement 进行批处理【英文标题】:Batch processing using PreparedStatement 【发布时间】:2017-07-04 12:31:55 【问题描述】:当我说我只能使用 1 个字符串 sql 查询在 Java 中使用 PreparedStatement
进行批处理时,我说得对吗?
例如,这是我要使用PreparedStatement
处理的批次:
INSERT INTO tbl_Customer VALUES(?,?,?,?)
INSERT INTO tbl_Order VALUES(?,?,?,?,?)
有什么方法可以批量处理这些语句?对不起我的英语不好。
【问题讨论】:
using JDBC preparedStatement in a batch的可能重复 您不能在同一批次中同时执行这两项操作。但是,您可以并行使用两个 PreparedStatement。 【参考方案1】:你下面的模板:
PreparedStatement ps = null;
ps = conn.prepareStatement("INSERT INTO tbl_Customer VALUES(?,?,?,?)");
while ()
...
ps.addBatch();
result = ps.executeBatch();
【讨论】:
我想插入 2 个不同的表。您的代码仅有助于将许多记录添加到 1 个表中。 使用 1 个函数,但用 2 个 SQL 调用它两次 使用批处理的要点是当记录出现问题时可以回滚。因此,没有记录插入到数据库中。如果我使用 2 个 SQL,另一个仍然插入到数据库中,对吗? @TeraMind 那么你应该使用transactions,如果你想确保两个语句都成功执行。 @Tera Mind。见飞行评论。如果您还没有调用 commit 并保持在相同的上下文中,则回滚将回滚两个批次以上是关于使用 PreparedStatement 进行批处理的主要内容,如果未能解决你的问题,请参考以下文章
JDBC preparedStatement分页和统计,批处理和事务
将 PreparedStatement 批处理与 Statement 批处理混合,可以吗?