事务1
2015-10-01 20:17
375 查看
假设存在表user
现在想如果id=2的money<300 ,则将id=1的money-10,同时将id=2的money+10;将其作为一个事务,同时做成功,或同时不成功。
当id=2的money>300时抛出异常,回滚事务,money不变。
id | money |
---|---|
1 | 100 |
2 | 310 |
package cn.itcast.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TxTest { public static void main(String[]args) throws SQLException{ test(); } static void test() throws SQLException { Connection conn = null; Statement st = null; ResultSet rs = 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); sql="select money from user where id=2"; rs=st.executeQuery(sql); float money=0.0f; if(rs.next()) money=rs.getFloat(1); if(money>300) throw new RuntimeException("超过最大值"); sql="update user set money =money+10 where id=2"; st.executeUpdate(sql); conn.commit(); //提交 } catch(SQLException e){ if(conn!=null) conn.rollback(); //出现异常,回滚 throw e; }finally { JdbcUtils.free(rs, st, conn); } } }
当id=2的money>300时抛出异常,回滚事务,money不变。
相关文章推荐
- spring4 quartz2 集群动态任务
- 整理:深度学习 vs 机器学习 vs 模式识别
- linux软硬连接
- Java基础知识强化之集合框架笔记07:Collection集合的遍历之迭代器遍历
- 关于FL2440两种启动方式
- POJ 3335 Rotating Scoreboard (半平面内核判断)
- 第二十天:php 与 mysql 的 基 本 配 置
- BNUoj 50401 Right turn 转向问题
- linux ext系列文件系统模型
- hdu1671(Tire-Tree)
- Web前端浏览器兼容初探
- grub阶段
- 动力效果 UIGravityBehavior- UICollisionBehavior- UIDynamicItemBehavior
- poj 2068 Nim 博弈论dp
- VMware vSphere Client WIN10安装问题
- Golang 1.3 发布时间。最终找到地方下载。
- AndroidUI 视图动画-混合动画效果 (AnimationSet)/动画效果监听
- SCU 4438 Censor (KMP)
- AndroidUI 视图动画-混合动画效果 (AnimationSet)/动画效果监听
- 【COCOS2DX-对28游戏开发】 Cocos2d-x-3c 道路设计 CocosBase CocosNet CocosWidget