JDBC管理事务

news2024/9/29 23:33:57

基本介绍

就是处理在mysql的事务
复习一下:事务是一组sql语句需要开启和提交,事务中的sql语句要么全部生效,要么全部不生效,提交之后就是全部生效,中间可以设置保存点,回退到保存点,或直接回退到最开始事务的状态

由事务还引出我们mysql的隔离级别来着
在这里插入图片描述
1.默认不开启事务,你执行语句就是自动提交,不能回滚
2.使用事务的特性
3.利用Connection的setAutoCommit(false)就会取消自动提交
4.commit()提交和sql相同
5.rollback()可以加参数或不加,加的话就是我们保存点的名称
不加就是回滚到最开始
在这里插入图片描述

模拟应用

在这里插入图片描述
搞个转账这种

如果你不使用事务,可能出现update出现异常,第一个用户少了钱,而第二个用户没有多钱
在这里插入图片描述

这种开发后,多线程高并发你指不定哪个就报异常了
所以用事务解决

package yuan.hsp.JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import yuan.hsp.JDBC.jdbcutils.JDBCUtils;

public class 事务处理 {
public static void main(String[] args) throws SQLException {
	Connection connection = JDBCUtils.getConnection();
	connection.setAutoCommit(false);//是连接设置!,连接创建所有Statement都不会自动提交
	String sql="update account set money = money-100 where id=1";
	String sql2="update account set money = money+100 where id=100";
	PreparedStatement prepareStatement = connection.prepareStatement(sql);
	prepareStatement.executeUpdate();//这个加不加update都是运行和他绑定的语句
	//返回结构不同这个是int(行数)不加的话就是boolean
	prepareStatement.execute(sql2);//!preparedStatement可以多次执行不需要?赋值的
	//如果执行?赋值的只能执行一次
	connection.commit();//一定要提交!
	JDBCUtils.close(null, prepareStatement, connection);
	
}
}

在这里插入图片描述
注意:1.事务针对连接2.preparedStatement可以执行多句不需要?赋值的,如果需要多次执行?赋值,只能多建几个preparedStatement!!!,默认execute就是执行绑定的那句,后面参数是字符串的话就是执行对应字符串
其实上面那个代码也不是特别好
正常写

try{转账语句}
catch{回滚语句,打印异常语句(输出转账失败什么的)}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186116.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.2.1存储结构:层次化存储结构、外存(辅存)、内存(主存)、CPU内部的寄存器、Cache(相联存储器)

1.2.1存储结构:层次化存储结构、外存(辅存)、内存(主存)、CPU内部的寄存器、Cache(相联存储器)存储系统--层次化存储结构外存(辅存)内存(主存)CPU…

并发编程学习(八):ReentrantLock

ReentrantLock 是java.util.concurrent.locks包下的类。相对于synchronized,它具备如下特性:可中断。可以设置超时时间。可以设置公平锁。支持多个条件变量。即可以有个多个waitset等待队列。与synchronized都支持可重入。ReentrantLock的基本语法:// 获…

数学建模相关竞赛零基础上手与入门介绍

文章目录1、赛事介绍与报名2、学习与训练2.1 比赛题目选择范围2.2 赛前组队与分工2.3 比赛时间分配1、赛事介绍与报名 什么是数学建模? 定义: 生活中的各种问题(如股票预测、火灾报警统计等),运用数学的方式去阐述并解决它。 数学建模赛事 …

cisp证书含金量怎么样?值不值得考?

这是CISP考试报名条件参考: 成为CISP,必须满足以下基本要求: 申请CISE、CISO注册资质,需满足以下教育和工作经验要求: (1)教育和工作经历要求:硕士及硕士以上学历,具备…

LabVIEW在实时目标上使用文件路径

LabVIEW在实时目标上使用文件路径文件路径和结构因目标操作系统而异。本文档讨论了推荐的LabVIEW编码实践,用于指定文件路径,以便应用程序可以无缝地从目标移动目标。实时操作系统选项所有NI实时控制器运行三种不同的操作系统之一,即PharLap、…

Find My资讯|美国航班取消,出行者疯狂购买苹果AirTag追踪行李箱

美国西南航空(Southwest Airlines Co.)由于所使用的 SkySolver 系统在圣诞假期间崩溃,导致航班出现大面积延误或取消(大约 13000 个航班受到影响),让公司损失超过 8 亿美元(当前约 53.76 亿元人…

5.kafka--生产调优

文章目录Leader Partition负载均衡消费者初始化流程消费者再平衡生产者和消费者如何提高吞吐量如何发送大消息Leader Partition负载均衡 参数名称描述auto.leader.rebalance.enable默认是true。自动LeaderPartition平衡。生产环境中,leader重选举的代价比较大&…

ADB快速入门

ADB快速入门 一、 简介 Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具用来连接电脑和Android设备(手机、电脑、电视、平板、…

LIO-SAM代码解析——imuPreintegration.cpp

目录imuPreintegration.cpp1. TransformFusion 类1.1. lidarOdometryHandler1.2. imuOdometryHandler2. IMUPreintegration 类2.1. imuHandler2.2. odometryHandler⭐2.2.1. 初始化系统, 把初始的lidar位姿,速度,零偏加入到因子图中2.2.2. 将两帧之间的i…

【深度学习】简述CNN分类网络的演变脉络及各自的贡献与特点

问题 简述CNN分类网络的演变脉络及各自的贡献与特点 综述 深度学习的浪潮就是从CNN开始的,它结构形态的变化也见证着这门技术的发展。现在涌进来学习深度学习的大部分人都是做计算机视觉的,因为这个门槛相对较低,业界数据集开源了很多,也比较直观,而且对硬件设备的要求…

2023年二月份图形化四级打卡试题

活动时间 从2023年 1月1日至1月21日,每天一道编程题。 本次打卡的规则如下: (1)小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 (2)小朋友做完题目后&…

Spring Boot 整合Redis分布式锁 Lua脚本

参考:微服务 Spring Boot 整合Redis分布式锁 Lua脚本 实现优惠卷秒杀 一人一单_Bug 终结者的博客-CSDN博客 一、什么是Lua? Lua 是一个小巧的脚本语言。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编…

MySQL事务学习笔记

事务就是保证一组数据库操作,要么全部成功,要么全部失败。事务的实现是在引擎层, 因此我们说的是InnoDB的事务。为何需要事务?比如有一个转钱的业务,A给B转100, 那么就是两条sql语句,一个是A的钱…

Spring Boot 热部署(热加载)

idea 热部署作用&#xff1a;自动帮开发者重启 spring boot 项目&#xff0c;从而达到修改代码之后能够“实时”的看到最新的效果1.添加热部署框架支持<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</…

Spring和Spring Boot的区别

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;Spring和Spring Boot的区别 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: …

双目立体匹配(传统/深度)方法总结

双目立体匹配工作--2022年度总述投影几何标定单目标定双目标定校正立体匹配传统方法深度学习方法合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式总述 投影几何 标定 摄像机参数&#xff1a;一般一共15个相关参数&#xff1a; &#xff08;1&#xff09;外参数…

详解目前最火的自主泊车技术

/ 导读 /谈起目前的自动驾驶技术&#xff0c;民众们最为熟悉的一定是已经走入寻常百姓家的辅助驾驶功能。对比起L4甚至更高级别的自动驾驶&#xff0c;司机们更相信将方向盘能时刻掌握在自己手中&#xff0c;如果有突发情况可以及时地进行接管。而目前消费者已经能体验到的辅助…

prometheus安装及使用入门

文章目录前言一. prometheus介绍1.1 prometheus的起源2.1 prometheus的特点二. prometheus的安装2.1 实验环境2.2 安装前准备2.3 开始安装prometheus2.3.1 下载并解压prometheus server2.3.2 安装过程2.3.3 启动并查看端口2.3.4 打开浏览器查看图形界面总结前言 云原生四象限&…

【应用】SpringCloud -- Sentinel

SpringCloud -- SentinelSentinel 概述Sentinel 的安装与启动Sentinel 微服务创建Sentinel 规则流控规则热点规则熔断规则授权规则Sentinel 其他常用功能规则持久化自定义异常Sentinel 概述 sentinel 官方文档 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越…

三十五、Kubernetes1.25中Ingress使用

1、概述在上篇文章中我们详解销售了Ingress是什么、有什么用以及怎么安装&#xff0c;如果没有看的建议先看下&#xff0c;然后再来看这篇文章&#xff0c;上篇文章地址&#xff1a;https://blog.csdn.net/u011837804/article/details/128564606这篇文章我们用实际操作&#xf…