Java 语句-Connection.setAutoCommit(false);

Java 语句-Connection.setAutoCommit(false);,java,jdbc,Java,Jdbc,如果我有一个打开的连接和一个statt stat,stat.executeBatch()是什么 我认为它没有任何作用,因为我已将autocommit设置为false 这里有一个例子: stat.addBatch("update bankaccount set balance = balance + 100 where customer = 'Bill'"); stat.addBatch("update bankaccount set balance = balance - 100 where c

如果我有一个打开的连接和一个statt stat,
stat.executeBatch()
是什么

我认为它没有任何作用,因为我已将autocommit设置为false

这里有一个例子:

stat.addBatch("update bankaccount set balance = balance + 100 where customer = 'Bill'");
stat.addBatch("update bankaccount set balance = balance - 100 where customer = 'Joe'");
stat.executeBatch();
con.commit();

批处理允许您将相关SQL语句分组到一个批中,并通过一次对数据库的调用提交它们

当您同时向数据库发送多个SQL语句时,可以减少通信开销,从而提高性能

  • 语句、PreparedStatement和CallableStatement的addBatch()方法用于将单个语句添加到批处理中
  • executeBatch()用于开始执行分组在一起的所有语句
而且

要启用手动事务支持,而不是JDBC驱动程序默认使用的自动提交模式,请使用连接对象的setAutoCommit()方法


如果将布尔值false传递给setAutoCommit(),则关闭自动提交。您可以传递布尔值true以再次启用它。

如果您正在进行批处理,则需要将autocommit设置为false。但为什么我需要执行包?它是什么?您正在使用
addBatch
向批处理添加内容,然后使用
executeBatch
执行该批处理。您的
自动提交
与此无关。(这是因为最后必须提交<代码>的问题。)那么我就不需要在最后提交了吗?@thomas去读一读。