java jdbc事务处理
时间: 2023-07-07 17:40:59 浏览: 97
JDBC(Java Database Connectivity)是Java语言访问数据库的一种标准规范,它提供了一套用于操作关系型数据库的API,包括连接数据库、执行SQL语句、处理结果集等。
事务是指一组操作,它们被视为一个整体,要么全部执行成功,要么全部失败回滚。在JDBC中,可以使用Transaction来管理事务。
JDBC中的事务处理包括以下几个步骤:
1. 获取数据库连接对象Connection。
2. 关闭自动提交,设置事务的隔离级别和超时时间。
3. 开始事务,使用Connection对象的beginTransaction()方法。
4. 执行SQL语句,使用Statement或PreparedStatement对象。
5. 如果执行过程中发生异常,使用Connection对象的rollback()方法回滚事务,否则使用commit()方法提交事务。
6. 关闭Statement或PreparedStatement对象。
7. 关闭Connection对象。
下面是一个简单的示例代码:
```java
import java.sql.*;
public class JdbcTransactionExample {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 获取数据库连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
// 关闭自动提交
conn.setAutoCommit(false);
// 设置事务的隔离级别和超时时间
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
conn.setTransactionTimeout(10);
// 开始事务
conn.beginTransaction();
// 执行SQL语句
pstmt = conn.prepareStatement("UPDATE users SET balance=balance-100 WHERE id=?");
pstmt.setInt(1, 1);
pstmt.executeUpdate();
pstmt = conn.prepareStatement("UPDATE users SET balance=balance+100 WHERE id=?");
pstmt.setInt(1, 2);
pstmt.executeUpdate();
// 提交事务
conn.commit();
} catch (SQLException e) {
// 回滚事务
try {
if (conn != null) {
conn.rollback();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
} finally {
// 关闭PreparedStatement和Connection对象
try {
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在上面的示例中,我们使用了PreparedStatement对象来执行SQL语句,并使用Connection对象的beginTransaction()、commit()和rollback()方法来管理事务。注意,如果在执行SQL语句的过程中发生异常,需要使用conn.rollback()方法回滚事务。最后,需要关闭PreparedStatement和Connection对象。
阅读全文