java 添加事务
时间: 2023-07-06 20:14:54 浏览: 101
在 Java 中,使用 JDBC 操作数据库时可以通过开启事务来保证操作的原子性、一致性、隔离性和持久性。以下是 Java 添加事务的示例代码:
```java
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = DriverManager.getConnection(url, username, password);
conn.setAutoCommit(false); // 关闭自动提交事务
stmt = conn.prepareStatement("UPDATE table SET column1 = ? WHERE id = ?");
stmt.setString(1, value1);
stmt.setInt(2, id);
stmt.executeUpdate();
stmt = conn.prepareStatement("UPDATE table SET column2 = ? WHERE id = ?");
stmt.setString(1, value2);
stmt.setInt(2, id);
stmt.executeUpdate();
conn.commit(); // 提交事务
} catch (SQLException e) {
if (conn != null) {
try {
conn.rollback(); // 回滚事务
} catch (SQLException ex) {
ex.printStackTrace();
}
}
e.printStackTrace();
} finally {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.setAutoCommit(true); // 恢复自动提交
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,首先通过 `DriverManager.getConnection()` 方法获取数据库连接,然后通过 `conn.setAutoCommit(false)` 关闭自动提交事务,接着通过 `conn.prepareStatement()` 方法创建 `PreparedStatement` 对象并执行 SQL 语句,最后通过 `conn.commit()` 提交事务。如果出现异常,则通过 `conn.rollback()` 回滚事务。注意需要在 `finally` 块中关闭相关资源,并将自动提交事务恢复为 `true`。