JDBC事务编程模型备忘

import java.sql.*;

/**
* JDBC编程事务控制模型备忘
*
* @author : leizhimin,2008-8-21 14:48:42。<p>
*/
public class JdbcTxText {
public static void main(String[] args) {
test();
}

public static void test() {
Connection conn = null;
//定义一个回滚点
Savepoint savepoint1 = null;
try {
//获取一个数据库连接
conn = DriverManager.getConnection("url", "user", "password");
//设置不自动提交,相当于开启了事务
conn.setAutoCommit(false);
//设置JDBC事务的级别
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
//创建一个用于执行静态 SQL 语句并返回它所生成结果的对象
Statement stmt = conn.createStatement();
//执行连个SQL语句,在同一个事务中
stmt.executeUpdate("insert into test values(1,'aaa')");
//定义一个回滚到(保存点)savepoint1,在事务失败的时候,可以回滚到定义的回滚点
savepoint1 = conn.setSavepoint("insert_end");
stmt.executeUpdate("update test set name = 'bbb' where id =1");
//提交事务
conn.commit();
} catch (SQLException e) {
try {
//当事务失败时候,回滚到(保存点)savepoint1
conn.rollback(savepoint1);

// 当本事务中的插入和更新SQL其中一个执行异常的时候,整个事务回滚
//conn.rollback();
} catch (SQLException e1) {
throw new RuntimeException("回滚事务发生异常!", e);
}
throw new RuntimeException("执行事务发生异常!", e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
throw new RuntimeException("关闭数据库连接发生异常!", e);
}
}
}
}
}
上面代码中:
//设置JDBC事务的级别
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
//当事务失败时候,回滚到(保存点)savepoint1
conn.rollback(savepoint1);
JDBC的事务级别设置,保存点(或回滚点)的设置与数据库和JDBC的驱动的实现有关系,并非完全支持,但是不支持也不会出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值