介绍MySQL和JDBC的事务控制(TCL)

介绍MySQL和JDBC的事务控制(TCL)

文章目录

一、MySQL的事务控制(Transaction Control Language)(1)事务的特性(ACID)(2)MySQL的事务控制(3)mysql事务演示二、JDBC的事务控制(1)JDBC事务简介(2)JDBC事务的API(3)JDBC事务控制模拟

相关免费学习推荐:mysql视频教程

一、MySQL的事务控制(Transaction Control Language)

(1)事务的特性(ACID)

事务指的是逻辑上的一组操作,组成这组操作的逻辑单元要么一起成功,要么一起失败。

原子性(atomicity):强调事务不可分割。一致性(consistency):强调的是事务的执行的前后,数据的完整性要保持一直。隔离性(isolation):一个事务的执行不应该受到其他事务的干扰。持久性(durability):事务一旦结束(提交/回滚)数据就持久保持到了数据库。

(2)MySQL的事务控制

设置手动提交:set autocommit = false;回滚rollback;提交commit ;

(3)mysql事务演示

☆查看已经存在的emp表:

mysql> select * from emp;+-------+--------+--------+------+------------+----------+--------+--------+| empno | ename  | job    | mgr  | hiredate   | sal      | commit | deptno |+-------+--------+--------+------+------------+----------+--------+--------+|  1002 | 白展堂 | clerk  | 1001 | 1983-05-09 |  7000.00 | 200.00 |     10 ||  1003 | 李大嘴 | clerk  | 1002 | 1980-07-08 |  8000.00 | 100.00 |     10 ||  1004 | 吕秀才 | clerk  | 1002 | 1985-11-12 |  4000.00 |   NULL |     10 ||  1005 | 郭芙蓉 | clerk  | 1002 | 1985-03-04 |  4000.00 |   NULL |     10 ||  1007 | 小白   | clerk  | 1001 | 2019-11-25 |  5555.00 | 500.00 |   NULL ||  2001 | 胡一菲 | leader | NULL | 1994-03-04 | 15000.00 |   NULL |     20 ||  2002 | 陈美嘉 | manger | 2001 | 1993-05-24 | 10000.00 | 300.00 |     20 ||  2003 | 吕子乔 | clerk  | 2002 | 1995-05-19 |  7300.00 | 100.00 |     20 ||  2004 | 张伟   | clerk  | 2002 | 1994-10-12 |  8000.00 | 500.00 |     20 ||  2005 | 曾小贤 | clerk  | 2002 | 1993-05-10 |  9000.00 | 700.00 |     20 ||  3001 | 刘梅   | leader | NULL | 1968-08-08 | 13000.00 |   NULL |     30 ||  3002 | 夏冬梅 | manger | 3001 | 1968-09-21 | 10000.00 | 600.00 |     30 ||  3003 | 夏雪   | clerk  | 3002 | 1989-09-21 |  8000.00 | 300.00 |     30 ||  3004 | 张一山 | clerk  | 3002 | 1991-06-16 |  8000.00 | 200.00 |     30 ||  3007 | 嫦娥   | clerk  | NULL | NULL       |     NULL |   NULL |     10 |+-------+--------+--------+------+------------+----------+--------+--------+15 rows in set (0.00 sec)

①设置手动提交:

mysql> set autocommit=false;Query OK, 0 rows affected (0.03 sec)

②在emp表中插入一条ename为mary的语句:

mysql> insert into emp(ename,job,commit)    -> values('mary','clerk',300);Query OK, 1 row affected (0.02 sec)mysql> select * from emp;+-------+--------+--------+------+------------+----------+--------+--------+| empno | ename  | job    | mgr  | hiredate   | sal      | commit | deptno |+-------+--------+--------+------+------------+----------+--------+--------+|  1002 | 白展堂 | clerk  | 1001 | 1983-05-09 |  7000.00 | 200.00 |     10 ||  1003 | 李大嘴 | clerk  | 1002 | 1980-07-08 |  8000.00 | 100.00 |     10 ||  1004 | 吕秀才 | clerk  | 1002 | 1985-11-12 |  4000.00 |   NULL |     10 ||  1005 | 郭芙蓉 | clerk  | 1002 | 1985-03-04 |  4000.00 |   NULL |     10 ||  1007 | 小白   | clerk  | 1001 | 2019-11-25 |  5555.00 | 500.00 |   NULL ||  2001 | 胡一菲 | leader | NULL | 1994-03-04 | 15000.00 |   NULL |     20 ||  2002 | 陈美嘉 | manger | 2001 | 1993-05-24 | 10000.00 | 300.00 |     20 ||  2003 | 吕子乔 | clerk  | 2002 | 1995-05-19 |  7300.00 | 100.00 |     20 ||  2004 | 张伟   | clerk  | 2002 | 1994-10-12 |  8000.00 | 500.00 |     20 ||  2005 | 曾小贤 | clerk  | 2002 | 1993-05-10 |  9000.00 | 700.00 |     20 ||  3001 | 刘梅   | leader | NULL | 1968-08-08 | 13000.00 |   NULL |     30 ||  3002 | 夏冬梅 | manger | 3001 | 1968-09-21 | 10000.00 | 600.00 |     30 ||  3003 | 夏雪   | clerk  | 3002 | 1989-09-21 |  8000.00 | 300.00 |     30 ||  3004 | 张一山 | clerk  | 3002 | 1991-06-16 |  8000.00 | 200.00 |     30 ||  3007 | 嫦娥   | clerk  | NULL | NULL       |     NULL |   NULL |     10 ||  4008 | mary   | clerk  | NULL | NULL       |     NULL | 300.00 |   NULL |+-------+--------+--------+------+------------+----------+--------+--------+16 rows in set (0.00 sec)

③使用rollback回滚

mysql> rollback;Query OK, 0 rows affected (0.00 sec)mysql> select * from emp;+-------+--------+--------+------+------------+----------+--------+--------+| empno | ename  | job    | mgr  | hiredate   | sal      | commit | deptno |+-------+--------+--------+------+------------+----------+--------+--------+|  1002 | 白展堂 | clerk  | 1001 | 1983-05-09 |  7000.00 | 200.00 |     10 ||  1003 | 李大嘴 | clerk  | 1002 | 1980-07-08 |  8000.00 | 100.00 |     10 ||  1004 | 吕秀才 | clerk  | 1002 | 1985-11-12 |  4000.00 |   NULL |     10 ||  1005 | 郭芙蓉 | clerk  | 1002 | 1985-03-04 |  4000.00 |   NULL |     10 ||  1007 | 小白   | clerk  | 1001 | 2019-11-25 |  5555.00 | 500.00 |   NULL ||  2001 | 胡一菲 | leader | NULL | 1994-03-04 | 15000.00 |   NULL |     20 ||  2002 | 陈美嘉 | manger | 2001 | 1993-05-24 | 10000.00 | 300.00 |     20 ||  2003 | 吕子乔 | clerk  | 2002 | 1995-05-19 |  7300.00 | 100.00 |     20 ||  2004 | 张伟   | clerk  | 2002 | 1994-10-12 |  8000.00 | 500.00 |     20 ||  2005 | 曾小贤 | clerk  | 2002 | 1993-05-10 |  9000.00 | 700.00 |     20 ||  3001 | 刘梅   | leader | NULL | 1968-08-08 | 13000.00 |   NULL |     30 ||  3002 | 夏冬梅 | manger | 3001 | 1968-09-21 | 10000.00 | 600.00 |     30 ||  3003 | 夏雪   | clerk  | 3002 | 1989-09-21 |  8000.00 | 300.00 |     30 ||  3004 | 张一山 | clerk  | 3002 | 1991-06-16 |  8000.00 | 200.00 |     30 ||  3007 | 嫦娥   | clerk  | NULL | NULL       |     NULL |   NULL |     10 |+-------+--------+--------+------+------------+----------+--------+--------+15 rows in set (0.00 sec)

发现mary没有插入成功,因为手动提交后进行和回滚;如果使用commit进行提交就无法回滚成功,因为直接插入进数据库中了。

二、JDBC的事务控制

(1)JDBC事务简介

默认事务提交策略:一条命令自成一个完整事务。需求:各个逻辑单元要么一起成功,要么一起失败。(如转账)

(2)JDBC事务的API

conn.setAutoCommit(false);//将JDBC事务设置手动提交conn.commit();conn.rollback();

(3)JDBC事务控制模拟

在emp表中修改ename名为hellen的记录,将其job从leader修改为clerk,奖金commit从600降低至300。
在这里插入图片描述
(模拟交易)TrasactionDemo:

package jdbc;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import util.JdbcUtil;/** * JDBC事务控制 *  * @author Administrator *  */public class TestTrasaction {public static void main(String[] args) {Connection conn = null;PreparedStatement pstm = null;PreparedStatement pstm1 = null;try {// 获得连接conn = JdbcUtil.getConnection();//将JDBC事务设置手动提交conn.setAutoCommit(false);// ①降职操作String sql = "updata emp set job = 'clerk' where ename = 'hellen'";pstm = conn.prepareStatement(sql);pstm.executeUpdate();// ②降奖金操作String sql1 = "updata emp set commit='3000' where ename = 'hellen'";pstm1 = conn.prepareStatement(sql1);pstm1.executeUpdate();//提交事务conn.commit();} catch (Exception e) {//事务回滚try {conn.rollback();} catch (SQLException e1) {e1.printStackTrace();}} finally {try {JdbcUtil.release(null, pstm, null);JdbcUtil.release(null, pstm1, conn);} catch (Exception e) {e.printStackTrace();}}}}

在这里插入图片描述
代码中添加了JDBC事务来处理两条sql语句(一条正确,一条错误),两条sql语句都没有执行。如果不添加JDBC事务处理,那么其中一条正确的sql语句就会单独执行。

相关免费学习推荐:mysql数据库(视频)

以上就是介绍MySQL和JDBC的事务控制(TCL)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/187296.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
创造与魔法次元兽栏玩法详解
上一篇 2026年9月5日 17:28:40
下一篇 2026年9月5日 17:33:42

相关推荐

  • mysql怎么使用表

    mysql怎么使用表mysql怎么使用表mysql怎么使用表mysql怎么使用表

    MySQL 表是存储数据的结构,使用 CREATE TABLE 命令创建表,INSERT INTO 命令插入数据,SELECT 命令查询数据,UPDATE 命令更新数据,DELETE 命令删除数据。 如何使用 MySQL 表 MySQL 表是用于存储和管理数据的结构。它们是任何 MySQL 数据库中…

    2026年9月24日 • 用户投稿
    100
  • mysql怎么使用数据库命令

    mysql怎么使用数据库命令mysql怎么使用数据库命令mysql怎么使用数据库命令mysql怎么使用数据库命令

    MySQL 命令包括:1. 数据操作语言(DML):SELECT、INSERT、UPDATE、DELETE;2. 数据定义语言(DDL):CREATE、ALTER、DROP;3. 数据控制语言(DCL):GRANT、REVOKE;4. 事务控制:BEGIN、COMMIT、ROLLBACK;5. 实用…

    2026年9月24日 • 用户投稿
    100
  • mysql数据库只读怎么解决

    mysql数据库只读怎么解决mysql数据库只读怎么解决mysql数据库只读怎么解决mysql数据库只读怎么解决

    解决 MySQL 数据库只读模式的方法:等待维护活动结束;检查系统日志找寻错误;重启 MySQL 服务;检查并调整 read_only 变量;联系数据库管理员寻求帮助。 MySQL 数据库只读模式解决方法 当 MySQL 数据库进入只读模式时,用户将无法对其进行任何写入操作,包括插入、更新和删除数据…

    2026年9月24日 • 用户投稿
    200
  • mysql安装未响应怎么回事

    mysql安装未响应怎么回事mysql安装未响应怎么回事mysql安装未响应怎么回事mysql安装未响应怎么回事

    MySQL 安装未响应的原因可能包括系统资源不足、防火墙阻拦、安装包损坏、依赖关系问题、权限问题、冲突软件或硬件故障。解决方法依序为:检查资源使用情况并升级服务器,暂时禁用防火墙或创建例外规则,重新下载并安装最新程序,确保依赖关系正确安装并运行,以管理员身份运行并检查权限,卸载或关闭冲突软件,以及检…

    2026年9月24日 • 用户投稿
    100
  • mysql安装未响应怎么解决

    mysql安装未响应怎么解决mysql安装未响应怎么解决mysql安装未响应怎么解决mysql安装未响应怎么解决

    如果 MySQL 安装过程中无响应,可尝试以下解决方案:检查计算机资源占用,释放更多资源;重新下载安装程序并移动到新位置;以管理员身份重新启动安装;在安全模式下尝试安装;禁用防病毒软件;检查系统是否满足安装要求;联系 MySQL 支持寻求进一步帮助。 MySQL 安装未响应的解决方案 问题:MySQ…

    2026年9月24日 • 用户投稿
    100
  • mysql属于什么类型的数据库?

    mysql属于什么类型的数据库?mysql属于什么类型的数据库?mysql属于什么类型的数据库?mysql属于什么类型的数据库?

    MySQL是一款开源关系型数据库管理系统,它允许用户存储、管理和访问结构化数据,优点包括开源、高效、可扩展、广泛支持和跨平台。它广泛应用于Web开发、电子商务、数据仓库、内容管理系统和数据分析等领域。 MySQL:一款流行的关系型数据库管理系统 MySQL 是一款关系型数据库管理系统 (RDBMS)…

    2026年9月24日 • 用户投稿
    900
  • mysql是什么类型的数据库?

    mysql是什么类型的数据库?mysql是什么类型的数据库?mysql是什么类型的数据库?mysql是什么类型的数据库?

    MySQL是一种开源、跨平台的关系型数据库管理系统,以其速度、可靠性、易用性、高性能、可扩展性和兼容性而著称。它广泛应用于Web开发、数据仓库、电子商务、金融服务、医疗保健等领域。 MySQL:关系型数据库管理系统 MySQL 是一种关系型数据库管理系统(RDBMS),用于创建、管理和查询数据库。它…

    2026年9月24日 • 用户投稿
    900
  • mysql是什么结构的数据库

    mysql是什么结构的数据库mysql是什么结构的数据库mysql是什么结构的数据库mysql是什么结构的数据库

    MySQL数据结构基于关系模型,由表组成,其中行代表记录,列代表字段。表由主键唯一标识,外键连接不同表中的数据。MySQL支持多种数据类型,索引提高查询性能。外键在表之间建立关系,创建复杂的数据结构。 MySQL 数据库结构 MySQL 是一种关系型数据库管理系统 (RDBMS),其数据结构基于关系…

    2026年9月24日 • 用户投稿
    1000
  • mysql用的什么数据结构

    mysql用的什么数据结构mysql用的什么数据结构mysql用的什么数据结构mysql用的什么数据结构

    MySQL 使用行和列的数据结构来组织数据,并提供存储引擎(如 InnoDB,使用 B+ 树索引)来高效地查找数据。B+ 树索引、散列索引、位图索引和全文索引等索引结构根据数据类型和查询类型进行优化,以提高数据检索速度。 MySQL 使用的数据结构 MySQL 是一种关系型数据库管理系统,它使用以下…

    2026年9月24日 • 用户投稿
    300
  • mysql命令行工具是什么

    mysql命令行工具是什么mysql命令行工具是什么mysql命令行工具是什么mysql命令行工具是什么

    MySQL命令行工具是一款命令解释器,用于管理MySQL数据库服务器。其功能包括连接到服务器、创建/删除数据库、表和数据,以及查询、管理用户和监控性能。使用方法:打开命令提示符,输入”mysql”命令,再输入用户名和密码即可连接。常用的命令有:创建数据库(CREATE DAT…

    2026年9月24日 • 用户投稿
    100
  • mysql数据恢复主要采用什么命令执行

    mysql数据恢复主要采用什么命令执行mysql数据恢复主要采用什么命令执行mysql数据恢复主要采用什么命令执行mysql数据恢复主要采用什么命令执行

    MySQL 数据恢复命令主要有:mysqldump:导出数据库备份。mysql:导入 SQL 备份文件。pt-table-checksum:验证并修复表完整性。MyISAMchk:修复 MyISAM 表。InnoDB 技术:自动恢复已提交事务,或手动通过 innobackupex 工具恢复。 MyS…

    2026年9月24日 • 用户投稿
    100
  • mysql数据库使用什么语言

    mysql数据库使用什么语言mysql数据库使用什么语言mysql数据库使用什么语言mysql数据库使用什么语言

    MySQL 数据库使用 Structured Query Language (SQL),一种用于与关系型数据库交互的编程语言。SQL 由四种类型的语句组成:数据定义语言 (DDL):创建/修改数据库结构数据操纵语言 (DML):插入/更新/删除/检索数据数据控制语言 (DCL):授予/撤销访问权限事…

    2026年9月24日 • 用户投稿
    000
  • mysql怎么读取数据

    mysql怎么读取数据mysql怎么读取数据mysql怎么读取数据mysql怎么读取数据

    如何从 MySQL 中读取数据?MySQL 提供了多种方法来读取数据,最常用的方法是使用 SELECT 语句。其他方法还包括游标、存储过程和触发器。 如何从 MySQL 中读取数据 MySQL 提供了多种方法来读取数据,最常用的方法是使用 SELECT 语句。 SELECT 语句 语法: SELEC…

    2026年9月24日 • 用户投稿
    200
  • mysql数据库中的自增列如何使用

    自增列是MySQL中用于自动产生唯一数值的整数列,通常作为主键使用。通过AUTO_INCREMENT属性,插入数据时若未指定值,系统会自动分配比当前最大值大1的数值,确保每条记录拥有唯一标识,简化插入操作。创建表时可定义自增列,如:CREATE TABLE users (id INT AUTO_IN…

    2026年9月24日
    100
  • mysql和sql server区别大吗

    mysql和sql server区别大吗mysql和sql server区别大吗mysql和sql server区别大吗mysql和sql server区别大吗

    MySQL和SQL Server的区别在于:1.许可证:MySQL开源免费,SQL Server需要付费许可证;2.平台:MySQL跨平台,SQL Server主要针对Windows;3.数据类型:MySQL提供多种数据类型,SQL Server提供更全面的数据类型;4.查询引擎:MySQL使用In…

    2026年9月24日 • 用户投稿
    100
  • mysql和sql server一样吗

    mysql和sql server一样吗mysql和sql server一样吗mysql和sql server一样吗mysql和sql server一样吗

    否,MySQL 和 SQL Server 并非相同。它们是两种不同的关系型数据库管理系统(RDBMS),尽管共享 SQL 兼容性和关系数据模型,但存在以下关键差异:所有权:MySQL 为开源,SQL Server 为专有。许可:MySQL 为免费,SQL Server 为商业许可。架构:MySQL …

    2026年9月24日 • 用户投稿
    200
  • mysql和sql server差别大吗

    mysql和sql server差别大吗mysql和sql server差别大吗mysql和sql server差别大吗mysql和sql server差别大吗

    是的,MySQL 和 SQL Server 之间存在显著差异。功能差异包括存储过程、触发器和全文搜索能力。特性差异包括高可用性、可扩展性、并发性。许可差异在于 MySQL 是开源和免费的,而 SQL Server 是专有软件。支持差异体现在 SQL Server 提供更全面的技术支持,而 MySQL…

    2026年9月24日 • 用户投稿
    100
  • 如何断开mysql数据库连接

    如何断开mysql数据库连接如何断开mysql数据库连接如何断开mysql数据库连接如何断开mysql数据库连接

    为了断开 MySQL 数据库连接,需要按以下步骤进行:创建连接对象获取连接游标关闭游标关闭连接 如何断开 MySQL 数据库连接 要断开 MySQL 数据库连接,可以使用以下步骤: 1. 创建连接对象 首先,使用 connect() 函数创建到数据库的连接对象,该函数需要一个数据库连接参数字符串作为…

    2026年9月24日 • 用户投稿
    200
  • mysql的索引有哪些类型

    mysql的索引有哪些类型mysql的索引有哪些类型mysql的索引有哪些类型mysql的索引有哪些类型

    MySQL索引可快速查找数据,通过在键值对中存储列值和数据指针实现。常见的索引类型有:B-Tree索引:支持范围查询,数据量大时性能佳。哈希索引:完全匹配查询快,但更新数据开销大。全文索引:索引文本数据,支持全文搜索。空间索引:索引地理空间数据,支持空间查询。并发B-Tree索引:高并发环境下性能更…

    2026年9月24日 • 用户投稿
    100
  • mysql下载初始化数据库失败怎么办

    mysql下载初始化数据库失败怎么办mysql下载初始化数据库失败怎么办mysql下载初始化数据库失败怎么办mysql下载初始化数据库失败怎么办

    初始化 MySQL 数据库失败可能是由于以下原因:服务未启动权限不足数据库已存在配置问题磁盘空间不足数据库引擎错误其他未知原因(可查看日志文件) MySQL 下载初始化数据库失败的解决方案 初始化 MySQL 数据库时遇到失败的情况,可能是以下几个原因导致的: 1. MySQL 服务未启动 确保 M…

    2026年9月24日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信