import java.sql.*;
/**
* JDBC编程事务控制模型备忘
*
* @author : leizhimin,2008-8-21 14:48:42。
*/
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);
}
}
}
}
}
--------------------next---------------------
阅读(303) | 评论(0) | 转发(0) |