Jdbc中事务的保存点解析
来源:互联网 发布:gta5卡顿优化 编辑:程序博客网 时间:2024/05/21 07:49
package cn.yutao.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Savepoint;import java.sql.Statement;/** * JDBC事务的保存点处理 * * 在JDBC的事务处理中,可以应用保存点技术,对一个事务中的处理进行部分提交。 * * @author liuyutao * */public class SavePoint {/** * 加载驱动类、建立连接 * * A:先把connection设置成不进行自动提交 * * B:中间设定保存点 * * C:回滚的地方要使用保存点 * * D:最后不要忘记进行commit()提交事务 * * @param args */public static void main(String[] args) throws SQLException {test();}/** * 本例测试事务的保存点 * * 先修改张三的钱数,设置保存点,再修改王五的钱数,判断李四的钱数是否大于300,是:则抛异常,进行回滚到保存点的操作 * * * @throws SQLException */static void test() throws SQLException {Connection conn = null;Statement st = null;ResultSet rs = null;Savepoint sp = null;try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "");// 初始化不自动提交conn.setAutoCommit(false);st = conn.createStatement();// 张三减去10元String sql = "update user set money=money-10 where id =1";st.executeUpdate(sql);// 设置事务的保存点sp = conn.setSavepoint();// 王五减10元sql = "update user set money=money-10 where id =3";st.executeUpdate(sql);// 查询的是李四的钱数sql = "select * from user where id =2";rs = st.executeQuery(sql);float money = 0.0f;if (rs.next()) {money = rs.getFloat("money");}// 判断李四的钱数是否大于300if (money > 400) {throw new RuntimeException("已经超过最大值");}sql = "update user set money=money+10 where id =2";st.executeUpdate(sql);conn.commit();} catch (ClassNotFoundException e) {throw new ExceptionInInitializerError(e);} catch (RuntimeException e) {// 如果李四的钱数大于300,则抛出RuntimeException异常if (conn != null && sp != null) {// 进行回滚操作conn.rollback(sp);System.out.println("回滚到张三减去10元的状态!");conn.commit();}throw e;} catch (SQLException e) {if (conn != null) {conn.rollback();}throw e;} finally {try {if (rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();} finally {try {if (st != null) {st.close();}} catch (SQLException e) {e.printStackTrace();} finally {try {if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}}}}}
2 0
- Jdbc中事务的保存点解析
- JDBC事务的保存点处理
- JDBC处理事务的保存点
- JDBC之设立事务的保存点
- 在Java的JDBC使用中设置事务回滚的保存点的方法
- JDBC事务保存点,即事部分回滚
- 事务及-保存点的应用
- JDBC中事务的使用
- JDBC中事务的使用
- JDBC中事务的使用
- JDBC中事务的使用
- JDBC中事务的使用
- JDBC中事务的使用
- 事务保存点
- 事务--保存点
- 嵌套事务和事务保存点的错误处理
- 嵌套事务和事务保存点的错误处理
- JDBC以及相关技术学习(七)----事务机制与保存点
- ajax传值后台获取初步了解
- 设计模式之UML类图初步
- 动态规划练习一 06:登山
- 关于如何阅读源码
- quartz使用的初步以及持久化任务
- Jdbc中事务的保存点解析
- Could not install the app on the device, read the error above for details. Make sure you have an And
- 资源泄漏的调试
- Windows 快捷键
- set集合的实现和性能
- Spring框架总结:
- idea启动项目address localhost:1099 is already in use异常解决
- Spring学习笔记-组件扫描
- 微信JSSDK分享接口,wechat,share ,onMenuShareAppMessage wx.onMenuShareTimeline