FDConnection的事务测试讲解。。
总之用事务的宗旨是:
1.不用嵌套事务EnableNested设置为False
2.事务一定要回滚,避免发生异常的情况下,没有回滚 造成,不可估量的错误。
try
frmClientDm.MyMainCon.StartTransaction;
try
//注意,这里不能有Exit;退出函数,因为退出了,Except部分并没有执行,会造成事务没有回滚
except
frmClientDm.MyMainCon.Rollback;
end;
finally
end;
2.用事务一定不要忘记出异常后 回滚事务,避免再次执行 就变成了 嵌套事务,因为上一个事务 虽然有异常,但是 事务已经开启,并没有关闭,如果再次点击按钮 再次调用StartTransaction,就变成了嵌套事务,最好不要用嵌套事务。
3.如上图的代码测试如下:
- procedure TForm1.正常Click(Sender: TObject);
- var
- MyFdq: TFDQuery;
- begin
- MyFdq := TFDQuery.Create(nil);
- try
- MyFdq.Connection := FDConnection1;
- FDConnection1.StartTransaction;
- with MyFdq do
- begin
- SQL.Add('insert into top_user(top_name,top_pwd,top_open_time) values (''a'',''a'',''1900-01-01 00:00:00'');');
- //SQL.Add('insert into top_user(top_name,top_pwd,top_open_time) values (''a'',''a'',''1900-01-01 00:00:00'');');
- //SQL.Add('insert into top_user(top_name,top_pwd,top_open_time) values (''a'',''a'',''1900-01-01 00:00:00'');');
- ExecSQL;
- end;
- FDConnection1.Commit;
- finally
- MyFdq.Free;
- end;
- end;
- procedure TForm1.出错Click(Sender: TObject);
- var
- MyFdq: TFDQuery;
- begin
- MyFdq := TFDQuery.Create(nil);
- try
- MyFdq.Connection := FDConnection1;
- try
- FDConnection1.StartTransaction;
- with MyFdq do
- begin
- SQL.Add('insert into top_user(2top_name,top_pwd,top_open_time) values (''a'',''a'',''1900-01-01 00:00:00'');');
- //SQL.Add('insert into top_user(top_name,top_pwd,top_open_time) values (''a'',''a'',''1900-01-01 00:00:00'');');
- //SQL.Add('insert into top_user(top_name,top_pwd,top_open_time) values (''a'',''a'',''1900-01-01 00:00:00'');');
- ExecSQL;
- end;
- FDConnection1.Commit;
- except
- //FDConnection1.Rollback;
- end;
- finally
- MyFdq.Free;
- end;
- end;
4.事务的正确使用方法:
- ADOConnection1.BeginTrans; //开始事务
- try
- with ADOCommand1 do
- begin
- Connection:=ADOConnection1;
- commandtext:='update [country] set [population]=10000 where [name]=''Venezuela''';//正确的SQL语句
- Execute;
- CommandText:='Wrong SQL Command';//错误的SQL
- Execute;
- ADOConnection1.CommitTrans; //提交事务
- end;
- except
- on E: Exception do
- begin
- ADOConnection1.RollbackTrans; //如有异常,事务回滚
- ShowMessage(E.Message);
- end
- end;
- end;
FDConnection的事务测试讲解。。的更多相关文章
- MYSQL 事务测试
mysql 事务测试 创建张表 lock1 增加字段 id,name . 增加两条记录 1,a 2,b 启动第一个会话 BEGIN; update lock1 set name='c' where i ...
- mysql事务测试
mysql事务测试 打开mysql的命令行,将自动提交事务给关闭 --查看是否是自动提交 1表示开启,0表示关闭 select @@autocommit; --设置关闭 set autocommit ...
- fio性能测试-环境搭建,功能介绍,测试讲解
fio性能测试-环境搭建,功能介绍,测试讲解 Fio介绍:FIO(Flexible I/O Tester)是一个用于测试磁盘.文件系统.块设备和网络设备性能的工具.它可以模拟不同类型的I/O负载,包括 ...
- oracle 事务测试
此文章是根据官方改变 模拟帐户转账流程 1.JOHN帐户扣除-DAVID帐户增加-记录日志-事务提交 三个操作必须全部完成此事务才完成,否则失败 创建帐户余额表自增字段自增序列: ; 创建支票表 ...
- SpringTest 使用说明 -构建无污染纯绿色事务测试框架 (记录用)
@ContextConfiguration({"classpath:applicationContext.xml","classpath:spring/buyer/app ...
- springboot 与 mybatis 中事务特性讲解
1 MyBatis自动参与到 spring 事务管理中,无需额外配置,只要org.mybatis.spring.SqlSessionFactoryBean引用的数据源与 DataSourceTrans ...
- Spring编程式和声明式事务实例讲解
Java面试通关手册(Java学习指南):https://github.com/Snailclimb/Java_Guide 历史回顾: 可能是最漂亮的Spring事务管理详解 Spring事务管理 S ...
- 多测试讲解_009肖sirRF自动化框架安装教程
robot framework:自动化测试框架 Python3.7 RIDE(可视化界面). Wxpython pip(在线下载) . setuptools(在线安装) . 第三方库 第三方库:s ...
- transaction 用tx事务 测试时 报错:Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/mvc]
Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/sc ...
- 【SpringBoot】数据库操作之整合Mybaties和事务讲解
========================8.数据库操作之整合Mybaties和事务讲解 ================================ 1.SpringBoot2.x持久化数 ...
随机推荐
- channel 是怎么走上死锁这条路的
本篇文章接着 hello world 的并发实现一文介绍 Go 的 channel 类型,同时进一步介绍 channel 的几种死锁情况,这些都是代码中很容易遇到的,要重点摘出来讲,防止一不留神程序就 ...
- Java标签在循环中的使用
定义 标签,类似--label1: 放在循环外部,用于内部多重循环语句的跳出 例子 public static void main(String[] args) { Scanner sc = new ...
- PR 调整时间线宽度
1.问题 这里的宽度太小,不好进行下一步的调整 2.解决方法 方法一 按下=可以放宽 按下-(=左边的那个键)可以缩小宽度 方法二 拖动下方的滑动条即可 方法三 按住ALT+滚轮,即可调节
- [转帖]小米Redis的K8s容器化部署实践
https://juejin.cn/post/6844904196924276743 背景 Why K8S How K8s Why Proxy Proxy带来的问题 K8s带来的好处 遇到的问 ...
- Harbor的逻辑备份与学习
Harbor的逻辑备份与学习 背景 一直想处理一下一个有网络冲突的Harbor镜像服务器 但是因为网络层自己水平一直是不是非常自信 加上Harbor容器使用的compose的玩法, 自己不敢直接处理. ...
- [转帖]Oracle客户端与Oracle数据库兼容矩阵
https://www.cnblogs.com/kerrycode/p/17666025.html Oracle客户端与Oracle数据库之间是有兼容支持关系的,有些低版本的Oracle Client ...
- [转帖]Mysql 常用命令行,持续补充
https://www.cnblogs.com/wzj1223/p/13152446.html 1.常用命令行 # 登录Mysql mysql -uroot -proot # 查看所有数据库 show ...
- 华城金锐申威SW64服务器重装过程
华城金锐申威SW64服务器重装过程 背景 这边为了进行兼容性验证新进了两套申威的服务器. 一台机器带着安装好的操作系统了. 但是另外一套没有对应的系统. 端午期间想着趁着上班的人少, 加吧给处理一下. ...
- [转帖]细说Redis监控和告警
https://blog.csdn.net/sD7O95O/article/details/78096956 对于任何应用服务和组件,都需要一套完善可靠谱监控方案.尤其redis这类敏感的纯内存.高并 ...
- [转帖]ubuntu下配置iptables、ufw端口转发
iptables 端口转发(CentOS) 注意:一来一去 在中转服务器操作 iptables -t nat -A PREROUTING -p tcp --dport [端口号] -j DNAT -- ...