JDBC可以通過以下步驟實現事務:
1. 創建Connection對象:使用DriverManager.getConnection()方法創建一個Connection對象,該對象表示與數據庫的連接。
2. 關閉自動提交:通過調用Connection對象的setAutoCommit(false)方法關閉自動提交。
3. 執行SQL語句:使用Connection對象創建Statement或PreparedStatement對象,然后執行SQL語句。
4. 提交事務:如果所有SQL語句都執行成功,調用Connection對象的commit()方法提交事務。
5. 回滾事務:如果有任何SQL語句執行失敗,可以調用Connection對象的rollback()方法回滾事務。
6. 關閉連接:無論事務是否成功,都需要關閉Connection對象來釋放資源。
以下是一個簡單的示例代碼:
```java
import java.sql.*;
public class TransactionExample {
public static void main(String[] args) {
Connection conn = null;
try {
// 創建Connection對象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "username", "password");
// 關閉自動提交
conn.setAutoCommit(false);
// 執行SQL語句
Statement stmt = conn.createStatement();
stmt.executeUpdate("INSERT INTO table1 VALUES (1, 'value1')");
stmt.executeUpdate("INSERT INTO table2 VALUES (2, 'value2')");
// 提交事務
conn.commit();
System.out.println("事務執行成功!");
} catch (SQLException e) {
// 回滾事務
if (conn != null) {
try {
conn.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
e.printStackTrace();
} finally {
// 關閉連接
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
```
在上述示例中,首先創建了一個Connection對象,然后關閉了自動提交。接下來執行了兩個INSERT語句,如果兩個語句都成功執行,則提交事務。否則,將回滾事務,并打印出異常信息。最后,關閉Connection對象。