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

SQLite使用连接提交Java执行批处理,java,sql,transactions,Java,Sql,Transactions,我对Java执行批处理函数有一个问题 例如:我在批处理中添加了10个insert进程,并执行批处理。如果失败,是否有一些插入进程成功执行并提交?这意味着自动提交会在批处理中的任何插入进程中发生?或者,如果一个过程失败,整个批插入将不会发生 将其转化为代码: 结果是否在这里: con.setAutoCommit(false); .... statement.addBatch(); .... statement.executeBatch(); .... con.commit(); 等于此值(如果执

我对Java执行批处理函数有一个问题

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

将其转化为代码:

结果是否在这里:

con.setAutoCommit(false);
....
statement.addBatch();
....
statement.executeBatch();
....
con.commit();
等于此值(如果执行批处理失败!!)


如果批处理失败,则该批处理的所有状态都将回滚。 看起来像

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
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
在这种情况下,将回滚所有桩号,并回滚第一个桩号和第二个桩号

UPD1

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

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
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

在这种情况下,将提交第一个、第二个和第四个状态。

如果是这种情况,从互联网上的许多示例来看,如果上面的两个示例都在一个条目失败时回滚,那么将自动提交设置为false,然后在批处理完全执行后提交的原理是什么?