JDBC事物的处理:
概念:事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。
数据库开启事务命令:
start transaction 开启事务
Rollback 回滚事务
Commit 提交事务
事物的使用:
JDBC控制事务语句
Connection.setAutoCommit(false); // 相当于mysql语句的start transaction
Connection.rollback(); // 相当于mysql语句的 rollback
Connection.commit(); // 相当于mysql语句的 commit
-----------------------------------------------------------------------------------
代码如下:
1 package com.aaa.demo1; 2 3 4 import com.aaa.demo.JdbcUtils; 5 6 import java.sql.Connection; 7 import java.sql.PreparedStatement; 8 import java.sql.SQLException; 9 10 public class DemoTranscation { 11 public static void main(String[] args) { 12 Connection conn = null; 13 PreparedStatement ps = null; 14 // 1 获取链接 15 try { 16 conn = JdbcUtils.getConnectio(); 17 //2 开启事物 18 conn.setAutoCommit(false); 19 // 3 获取PreparedStatement 20 ps = conn.prepareStatement("UPDATE count SET money = money-? WHERE cname =?"); 21 22 23 // 4 使用PreparedStatement 两次更新操作 24 ps.setDouble(1, 500); 25 ps.setString(2, "樱花落"); 26 ps.executeUpdate(); 27 System.out.println(111 / 0); 28 ps = conn.prepareStatement("UPDATE count SET money = money+? WHERE cname =?"); 29 ps.setDouble(1, 500); 30 ps.setString(2, "洛天依"); 31 ps.executeUpdate(); 32 //提交事物 33 34 // System.out.println("转账成功"); 35 //conn.commit(); 36 37 } catch (Exception e) { 38 //事物回滚 39 try { 40 conn.rollback(); 41 } catch (SQLException e1) { 42 e1.printStackTrace(); 43 } 44 System.out.println("转账失败"); 45 } finally { 46 //关资源 47 JdbcUtils.close( conn,ps); 48 49 } 50 51 } 52 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律