初学者jdbc
public static void test() {
Connection conn = null;
// 定义一个回滚点
Savepoint sp = null;
Statement stmt = null;
try {
// 获取一个数据库连接
conn = JdbcTxTest.getConnect();
// 设置不自动提交,相当于开启了事务
conn.setAutoCommit(false);// 设置为非自动提交
// 设置JDBC事务的级别
conn.setTransactionIsolation(conn.TRANSACTION_SERIALIZABLE);// 设置事务级别
// 创建一个用于执行静态 SQL 语句并返回它所生成结果的对象
stmt = conn.createStatement();
// 执行连个SQL语句,在同一个事务中
stmt
.executeUpdate("insert into t_test(id,name) values(SEQ_AIRPORT_DYNAMICINFO.NEXTVAL,'aaa')");
sp = conn.setSavepoint();
// 定义一个回滚到(保存点)savepoint1,在事务失败的时候,可以回滚到定义的回滚点
stmt.executeUpdate("update t_test set name='bbb' where name='aaa'");
// 提交事务
conn.commit();
} catch (SQLException e) {
try {
// 当事务失败时候,回滚到(保存点)savepoint1
conn.rollback(sp);
} catch (SQLException e1) {
throw new RuntimeException("回滚事务时发生异常");
}
throw new RuntimeException("执行事务时发生异常");
} finally {
JdbcTxTest.closeConnect(conn, stmt, null);
}
}