第二十一章 JDBC_事务的保存点处理

来源:互联网 发布:ios性能优化工具 编辑:程序博客网 时间:2024/06/16 05:12

conn.setSavepoint()  保存点
conn.rollback(sp); 回滚到保存点


package cn.itcast.jdbc;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Savepoint;import java.sql.Statement;public class SavePointTest {/** * @param args * @throws SQLException */public static void main(String[] args) throws SQLException {test();}static void test() throws SQLException {Connection conn = null;Statement st = null;ResultSet rs = null;Savepoint sp = null;try {conn = JdbcUtils.getConnection();conn.setAutoCommit(false);st = conn.createStatement();String sql = "update user set money=money-10 where id=1";st.executeUpdate(sql);sp = conn.setSavepoint();  //保存点sql = "update user set money=money-10 where id=3";st.executeUpdate(sql);sql = "select money from user where id=2";rs = st.executeQuery(sql);float money = 0.0f;if (rs.next()) {money = rs.getFloat("money");}if (money > 300)throw new RuntimeException("已经超过最大值!");sql = "update user set money=money+10 where id=2";st.executeUpdate(sql);conn.commit();} catch (RuntimeException e) {if (conn != null && sp != null) {conn.rollback(sp);  //回滚到保存点conn.commit();}throw e;} catch (SQLException e) {if (conn != null)conn.rollback();throw e;} finally {JdbcUtils.free(rs, st, conn);}}}


原创粉丝点击