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持久化数 ...
随机推荐
- MaxListenersExceededWarning:Possible EventEmitter memory leak detected.
打包出现内存溢出 解决办法:
- SpringBoot 集成短信和邮件
准备工作 1.集成邮件 以QQ邮箱为例 在发送邮件之前,要开启POP3和SMTP协议,需要获得邮件服务器的授权码,获取授权码: 1.设置>账户 在账户的下面有一个开启SMTP协议的开关并进行密码 ...
- java进阶(5)--package与import
一.package 1.package的作用:为了方便程序的管理 2.package怎么使用:package+包名,只能出现在java代码的第一行 3.package命令规范:一般采用公司域名倒序方式 ...
- FinalShell上传文件失败
1.问题 上传文件失败,如图所示,即使切换至root用户 2.解决方式 这里在建立SSH连接时,就必须使用root用户,而若使用普通用户,即使在其中切换至root用户,也无法上传. 所以重新建立一个r ...
- SQLServer数据库优化学习-总结
SQLServer数据库优化学习-总结 背景 各种能力都需要提升. 最近总是遇到SQLServer的问题 趁着周末进行一下学习与提高. 安装与优化 1. 数据库必须安装 64位, 不要安装成32位的版 ...
- [转帖]How to Resolve ORA-3136 Inbound Connection Timed Out
https://logic.edchen.org/how-to-resolve-ora-3136-inbound-connection-timed-out/#:~:text=ORA-03136%3A% ...
- [转帖]decimal and numeric (Transact-SQL)
https://learn.microsoft.com/en-us/sql/t-sql/data-types/decimal-and-numeric-transact-sql?view=sql-ser ...
- [转帖] 拒绝蛮力,高效查看Linux日志文件!
https://www.cnblogs.com/codelogs/p/16410363.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 日常分析问题时 ...
- [转帖]Shell中常用的date时间命令
常用FORMAT %Y YYYY格式的年份(Year) %m mm格式的月份(),01-12 %d dd格式的日期(day of month),01-31 %H HH格式的小时数(),00 ...
- [转帖]Linux kernel内存管理之overcommit相关参数
前言 了解 linux kernel内存管理,首先可以从用户空间的角度来看kernel的内存管理,执行ls /proc/sys/vm的命令,就可以看到vm运行的所有参数,其中就包含了跟overcomm ...