jdbc Connection conn= DriverManager.getConnection(url,name,password); String sql1="update iamhere set account=3000 where licence=1"; String sql2="update iamhere set account=4000 where licence=2"; Statement sttm=conn.createSta
时间: 2024-03-22 13:38:11 浏览: 113
抱歉,您的问题似乎还是不完整,但我猜您可能想问:
在 JDBC 中,如果使用事务控制多个 SQL 语句的执行,当其中一个 SQL 语句执行失败时,需要回滚所有已经执行的 SQL 语句。请问,对于以下代码,如何实现事务控制?
```java
Connection conn = DriverManager.getConnection(url, name, password);
String sql1 = "update iamhere set account=3000 where licence=1";
String sql2 = "update iamhere set account=4000 where licence=2";
Statement sttm = conn.createStatement();
sttm.executeUpdate(sql1);
sttm.executeUpdate(sql2);
```
回答:
要实现事务控制,需要在使用 Connection 创建 Statement 对象之前,设置 Connection 的自动提交模式为 false,然后在 SQL 语句执行完成之后,手动提交或回滚事务。
代码实现如下:
```java
Connection conn = DriverManager.getConnection(url, name, password);
conn.setAutoCommit(false); // 设置自动提交为 false
String sql1 = "update iamhere set account=3000 where licence=1";
String sql2 = "update iamhere set account=4000 where licence=2";
Statement sttm = conn.createStatement();
try {
sttm.executeUpdate(sql1);
sttm.executeUpdate(sql2);
conn.commit(); // 手动提交事务
} catch (SQLException e) {
conn.rollback(); // 回滚事务
e.printStackTrace();
} finally {
sttm.close();
conn.close();
}
```
在上面的代码中,首先将 Connection 的自动提交模式设置为 false,然后执行 SQL 语句,如果执行成功,手动提交事务;如果执行失败,回滚事务。最后关闭 Statement 和 Connection 对象。
阅读全文