Java操作Oracle事务,以转账为例。
转账之前

package translate.commit;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class CommitRollback {public static void main(String[] args) {giao();}public static void giao() {Connection conn = null;PreparedStatement ps = null;PreparedStatement ps1 = null;try {conn = getConn();// jack 给 rose 转200 快String sql = "update stu set s_money = s_money - 200 where s_id = ?";// 预编译SQL语句。ps = conn.prepareStatement(sql);ps.setInt(1, 1);// 不让Java自动提交事务conn.setAutoCommit(false);int i = ps.executeUpdate();System.out.println(i>0 ? "转账成功" : "失败");// 模拟异常。System.out.println(1/0);sql = "update stu set s_money = s_money + 200 where s_id = ?";ps1 = conn.prepareStatement(sql);ps1.setInt(1, 2);conn.setAutoCommit(false);int i1 = ps1.executeUpdate();System.out.println(i1>0 ? "到账成功" : "失败");// 手动提交事务 如果没有异常,则可提交。conn.commit();} catch (Exception e) {try {// 程序由于算术错误 中断 所以要撤回提交。conn.rollback();} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();} finally {closeAll(conn, ps, null);try {if (ps1 != null)ps1.close();} catch (SQLException e) {e.printStackTrace();}}}public static Connection getConn() throws Exception {Class.forName("oracle.jdbc.OracleDriver");String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";Connection conn = DriverManager.getConnection(url, "scott", "scott");return conn;}public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs) { try {if (rs != null)rs.close();if (ps != null)ps.close();if (conn != null)conn.close();} catch (SQLException e) {e.printStackTrace();}}}

执行之后

SQL里面的事务介绍如下:
SQL事务

Java模拟事务Demo相关推荐

  1. curl命令java_上curl java 模拟http请求

    最近,我的项目要求java模拟http请求,获得dns解决 tcp处理过的信息特定的连接. java api提供urlConnection apache提供的httpClient都不能胜任该需求,二次 ...

  2. 什么叫事务?Java如何处理事务呢?

    什么叫事务?这些就是数据库特有的术语了.懒虫在这里口头解释:就是把多件事情当做一件事情来处理.也就是大家同在一条船上,要活一起活,要over一起over ! 我为什么要使用事务? 俺这里再举个很俗很俗 ...

  3. java整理软件---java模拟键盘,鼠标操作

    1.Java 模拟键盘输入的小Demo,实现自动按下:模拟Ctrl+Alt+Z的按下和抬起    如果你开着qq的话,那么qq会自动弹出来.哈哈,代替人工操作; import java.awt.Rob ...

  4. Java中事务的处理全解析

    ava的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先前的 ...

  5. app支付宝支付java后台_支付宝app支付java后台流程demo

    支付宝app支付java后台流程demo 使用ssm框架实现支付宝支付功能. 支付宝测试环境代码测试 源代码 https://github.com/OUYANGSIHAI/sihai-maven-ss ...

  6. 支付宝app支付java后台流程demo

    支付宝app支付java后台流程demo 使用ssm框架实现支付宝支付功能. 支付宝测试环境代码测试 源代码 https://github.com/OUYANGSIHAI/sihai-maven-ss ...

  7. Java 模拟58登录

    Java 模拟 58登录 (一) 分析 标签(空格分隔): Java 实习期间需要做一个模拟58登录然后爬取简历,第一次做项目遇到很多坑 同时网上关于58登录的又没有很多资料,遇到了很多坑,这里记录一 ...

  8. java 模拟时钟_java模拟时钟

    本次课程设计采用时间片轮转调度算法来实现模拟进程调度任务的执行过 程. 用 Java 模拟进程调度过程,可以方便地将运行结果直观地表示出来.Java 语言 独有的多...... 本次课程设计采用时间片 ...

  9. 233网校java_java辅导:使用java模拟登陆考试大

    java辅导:使用java模拟登陆考试大 2009年1月5日来源:233网校网校课程 在线题库评论 分享到 public static void loginexamda() { URL url = n ...

最新文章

  1. C# 存储过程 分页
  2. 登录屏幕上不要显示上次登录的用户名 图文教程[server 2003/2008]
  3. Foundation框架: 11.NSDate的基本认识和使用
  4. 关于jQuery对象与DOM对象
  5. Mac Supervisor 管理进程
  6. 江西师范大学2017年C语言考试,2018年江西师范大学程序设计(C语言)考研初试大纲...
  7. 2窗口大小 python_Python编程基础知识系列连载(2)
  8. php常用加密函数总结
  9. 2019最新私塾在线高级java软件架构师培训项目实战(完整)
  10. c语言作业制作仓库管理系统,c语言课设仓库管理系统.doc
  11. 前端HTML(3)【带动图,便于理解】
  12. 大数据查询引擎 PrestoDB
  13. 2020年计算机一级Wps试题,2020年计算机一级WPS考试强化习题及参考答案
  14. 2022-4-28作业
  15. PPT制作技巧汇总之动画设置与播放(office 2007)
  16. TensorFlow2.0选择GPU或CPU训练
  17. 公交换乘系统c语言,数据结构课程设计报告(公交换乘).docx
  18. python安装launcher要选吗_python launcher是什么
  19. (六)Docker三剑客之Swarm
  20. 嵌入式GUI分析详解

热门文章

  1. 前端学习(1341):mongoose验证规则延伸
  2. 前端学习(563):干掉block重叠margin重叠
  3. 前端学习(305):bootstrap4之工具方法
  4. spring学习(2):初始化spring程序
  5. GB4208中规定的外壳防护等级IP
  6. java jdbc6_Java学习-JDBC
  7. linux mysql5.7.11_在Linux中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本
  8. python模拟购物车购物过程_Python 模拟购物车的实例讲解
  9. AutoMapper 9.0的改造
  10. Eclipse最常用快捷键