如何在JDBC中禁用自动提交模式?
下面的代码片段向您展示了如何在执行JDBC命令时禁用自动提交操作。
package org.nhooo.example.jdbc; import java.sql.*; public class AutoCommitSettingExample { private static final String URL = "jdbc:mysql://localhost/nhooo"; private static final String USERNAME = "root"; private static final String PASSWORD = ""; public static void main(String[] args) { //应做的事:获取与数据库的连接,我们需要获取 //执行任何JDBC命令之前进行数据库连接 try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD)) { //禁用自动提交操作。默认情况下,每个语句 //在JDBC中针对数据库执行的操作处于自动提交模式。至 //禁用自动提交,将其设置为false connection.setAutoCommit(false); //做:在这里执行其他一些数据库操作 String sql = "DELETE FROM books WHERE isbn = ?"; try (PreparedStatement statement = connection.prepareStatement(sql)) { statement.setString(1, "9781617294945"); statement.executeUpdate(); //最后,我们必须显式调用commit方法才能完成 //所有数据库操作 connection.commit(); } catch (SQLException e) { //当发生异常时,回滚事务。 connection.rollback(); throw e; } } catch (SQLException e) { e.printStackTrace(); } } }
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>