当前位置: 首页 > news >正文

ACID [Atomicity, Consistency, Isolation, Durability]

ACID [Atomicity, Consistency, Isolation, Durability] 原子性、一致性、隔离性、持久性

package further.zwf.acid; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; /** * MySQL 事务示例:银行转账(原子性、一致性保证) * * @author ZengWenFeng * @date 2022.12.07 * @mobile 13805029595 * @email 117791303@QQ.COM */ public class MysqlTransactionDemo { // 数据库配置(改成你自己的) private static final String URL = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC"; private static final String USER = "root"; private static final String PASSWORD = "123456"; public static void main(String[] args) { transfer(1001, 1002, 100.0); // 1001 给 1002 转 100 元 } /** * 转账方法(核心事务代码) * @param fromId 转出账户ID * @param toId 转入账户ID * @param money 转账金额 */ public static void transfer(int fromId, int toId, double money) { Connection conn = null; PreparedStatement deductStmt = null; PreparedStatement addStmt = null; try { // 1. 获取数据库连接 conn = DriverManager.getConnection(URL, USER, PASSWORD); // ========== 事务核心:关闭自动提交 ========== conn.setAutoCommit(false); // 2. 扣钱:转出账户 -money String deductSql = "UPDATE account SET balance = balance - ? WHERE id = ?"; deductStmt = conn.prepareStatement(deductSql); deductStmt.setDouble(1, money); deductStmt.setInt(2, fromId); deductStmt.executeUpdate(); // 模拟异常(打开测试回滚) // int error = 1 / 0; // 3. 加钱:转入账户 +money String addSql = "UPDATE account SET balance = balance + ? WHERE id = ?"; addStmt = conn.prepareStatement(addSql); addStmt.setDouble(1, money); addStmt.setInt(2, toId); addStmt.executeUpdate(); // ========== 全部成功:提交事务 ========== conn.commit(); System.out.println("转账成功!事务已提交"); } catch (Exception e) { // ========== 出现异常:回滚事务 ========== try { if (conn != null) { conn.rollback(); System.out.println("转账失败!事务已回滚"); } } catch (SQLException ex) { ex.printStackTrace(); } e.printStackTrace(); } finally { // 关闭资源 try { if (deductStmt != null) deductStmt.close(); if (addStmt != null) addStmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
http://www.jsqmd.com/news/824319/

相关文章:

  • 谷歌关键词搜索怎么做上去? 提升首页点击率的4个标题优化细节
  • 紧急预警:传统地理文献管理方式正在失效!用NotebookLM重建你的学术记忆系统(含2024最新API适配方案)
  • 探讨国内外AI发展前瞻---未来国内会不会出台政策干预
  • 2026 乌兰浩特搏击训练营哪家好?本地内行带路与避坑考察 - 资讯速览
  • 2026 扬州市江都区格斗馆哪家好?本地内行带路与避坑考察 - 资讯速览
  • 基于Git与Markdown构建本地开发者知识库:Grimoire项目实践指南
  • ComfyUI全面掌握-知识点详解——Nodes 2.0 新特性与实操技巧
  • 当实施动环监控系统时,如何有效提升机房管理的智能化与运行效率?
  • 告别激活烦恼:3分钟搞定Windows和Office永久免费激活的智能方案
  • 2025届必备的AI写作神器实测分析
  • 微信聊天记录解密指南:3步恢复你的珍贵回忆
  • 【官方通告|全网首发】2026 年 5 月 欧米茄中国区官方维修售后服务网络全面升级|认证维修中心地址・唯一服务热线正式公示 - 资讯速览
  • UE输出场景2D全景图和2D全景深度图
  • 7th grade math (2026.05.15)Binary Linear Equation Group
  • 告别手动写公式:ChatGPT生成VLOOKUP、XLOOKUP、动态数组公式的7种精准提示词(附可复制模板)
  • 谷歌Android重大更新!底层植入Gemini,苹果已掉队
  • 前端FFmpeg实战:从零构建浏览器内视频压缩工具
  • 2026 登封市搏击馆哪家好?本地内行带路与避坑考察 - 资讯速览
  • LunaTranslator终极指南:如何免费快速实现Galgame实时翻译
  • 神经中枢:输出解析器,搭建文本与数据的桥梁
  • 深度学习之感知机详解
  • Zotero文献去重终极指南:快速清理重复文献的高效解决方案
  • 少儿AI英语背单词APP的开发
  • 从零分到满分:DeepSeek在高考物理计算题中的7次迭代优化全过程(含中间态输出与公式链校验日志)
  • 2026广州版权代理机构TOP5|众致9年深耕,版权登记、维权一站式护航,补贴精准申领 - 资讯速览
  • 深度学习之MLP与反向传播算法详解
  • 网盘直链获取神器LinkSwift:告别繁琐下载,开启高效文件管理新时代
  • 终极指南:Translumo实时屏幕翻译器如何打破游戏与视频的语言壁垒
  • 7th grade math (2026.05.15)
  • 【RL】RL Grokking Recipe: How Does RL Unlock and Transfer New Algorithms in LLMs?