SQLite使用连接提交Java执行批处理

时间:2015-02-21 04:46:22

标签: java sql transactions

我对Java Execute Batch功能有疑问。

例如:我在批处理中添加了10个插入流程,然后执行批处理。如果失败,有一些插入过程成功执行并提交?这意味着批处理中的任何插入过程都会发生自动提交?或者如果一个过程失败,则不会发生整批插入。

把它放入代码:

结果在这里:

con.setAutoCommit(false);
....
statement.addBatch();
....
statement.executeBatch();
....
con.commit();

等于此(如果执行完成失败!!)

....
statement.addBatch();
....
statement.executeBatch();

1 个答案:

答案 0 :(得分:1)

如果您的批次失败,那么将回滚该批次的所有状态。 它看起来像

begin transaction
insert into t1(f1,f2) values(1,2) 
insert into t1(f1,f2) values(2,3)
insert into t1(f1,f2) values(3,4) -- fail here
insert into t1(f1,f2) values(4,5)
commit

在这种情况下,将回滚所有状态以及第一个参数和第二个。

<强> UPD1

使用自动提交时,它看起来像

begin transaction
insert into t1(f1,f2) values(1,2) 
commit
begin transaction
insert into t1(f1,f2) values(2,3)
commit
begin transaction
insert into t1(f1,f2) values(3,4) -- fail here
commit
begin transaction
insert into t1(f1,f2) values(4,5)
commit

在这种情况下,将提交第一个,第二个和第四个参数。