导读跟大家讲解下有关介绍MySQL和JDBC的事务控制(TCL),相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说介绍MySQL和JDBC的事
跟大家讲解下有关介绍MySQL和JDBC的事务控制(TCL),相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说介绍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的事务控制
设置手动提交:t autocommit = fal;
回滚rollback;
提交commit ;
(3)mysql事务演示
查看已经存在的emp表:
mysql> lect * 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 t (0.00 c)
①设置手动提交:
mysql> t autocommit=fal;Query OK, 0 rows affected (0.03 c)
②在emp表中插入一条ename为mary的语句:
mysql> inrt into emp(ename,job,commit) -> values('mary','clerk',300);Query OK, 1 row affected (0.02 c)mysql> lect * 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 t (0.00 c)
③使用rollback
回滚
mysql> rollback;Query OK, 0 rows affected (0.00 c)mysql> lect * 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 t (0.00 看阅兵仪式的观后感c)
发现mary没有插入成功因为手动提交后进行和回滚;如果使用commit进行提交就无法回滚成功因为直接插入进数据库中了。
二、JDBC的事务控制
(1)JDBC事务简介
默认事务提交策略:一条命令自成一个完整事务。需求:各个逻辑单元要么一起成功要么一起失败。(如转账)
(2)JDBC事务的API
conn.tAutoCommit(fal);//将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.tAutoCommit(fal);// ①降职操作String sql = "updata emp t job = 'clerk' where ename = 'hellen'";pstm = conn.prepareStatement(sql);pstm.executeUpdate;// ②降奖金操作String sql1 = "updata emp t 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.relea(null, pstm, null);JdbcUtil.relea(null, pstm1, conn);} catch (Exception e) {e.printStackTrace;}}}}
代码中添加了JDBC事务来处理两条sql语句(一条正确,一条错误)两条sql语句都没有执行。如果不添加JDBC事务处理那么其中一条正确的sql语句就会单独执行。
相关免费学习推荐:mysql数据库(视频)
以上就是介绍MySQL和JDBC的事务控制(TCL)的详细内容!
来源:php中文网
本文发布于:2023-02-26 16:26:16,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/167739997654915.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:互联网常识:介绍MySQL和JDBC的事务控制(TCL).doc
本文 PDF 下载地址:互联网常识:介绍MySQL和JDBC的事务控制(TCL).pdf
留言与评论(共有 0 条评论) |