如何在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>