使用delphi 开发多层应用(九)客户端使用事务更新多个表数据到kbmMW服务器

简介: 上次说明了客户端如何把变化的数据更新到服务器端,但是在实际应用中,往往是要同时更新若干个表, 为了保证逻辑上一致,这些表的操作要么都一次成功,要么全部失败,这就需要使用事务处理。我们今天 就来说一下,怎么在kbmMW中实现事务处理。

  上次说明了客户端如何把变化的数据更新到服务器端,但是在实际应用中,往往是要同时更新若干个表,

为了保证逻辑上一致,这些表的操作要么都一次成功,要么全部失败,这就需要使用事务处理。我们今天

就来说一下,怎么在kbmMW中实现事务处理。同时也顺便讲一下kbmMW 里面命名查询(named query)的

使用,首先我们打开服务器端,在数据服务上增加一个TkbmMWIBDACQuery,如图

设置它的connctionpool 为Form1.kbmMWIBDACConnectionPool1

resolver 为kbmMWIBDACResolver1

sql 为select * from BMB

keyfieldsnames  为 BMID

tablename 为 BMB

Published 为True

最后把name 改成BMB. 同时把Form1.kbmMWIBDACConnectionPool1的maxconnections 设为5.

好了,服务器端设置好了,可以编译并运行了。

 

现在打开客户端,增加一个TkbmMWClientQuery,并设置相应的参数

注意其他参数与上一个kbmMWClientQuery 一样,唯一不同的就是在query 里面输入@bmb, 也就是直接调用服务器

端的query,这就是命名查询的使用方法,理论上,为了保证多层系统的可维护性,建议多使用命名查询,减少直接SQL 操作。

为了实现事务操作,我们还需要加一个TkbmMWClientTransactionResolver,

并如图设置相关属性,最后为了说明事务操作,我们在“更新到后台”按钮里面改成以下代码:

    with  kbmMWClientQuery2 do
begin
Open;
edit;
fieldbyname('BMNAME').AsString:='测试部门';
post;
end;

with kbmMWClientQuery1 do
begin
edit;
fieldbyname('XM').AsString:='测试人名';
post;
end;

if kbmMWClientTransactionResolver1.Resolve([kbmMWClientQuery2,kbmMWClientQuery1]) then
begin
showmessage('更新成功');
end
else
showmessage('更新失败');
end;

我们在服务器端监测sql 的执行,如下图

可以清楚的看见两个UPDATE 是在一个事务里面完成的,如果任意一个update 出问题,另外一个会跟着失败,保证了数据的一致性。

 

 

 

目录
相关文章
|
1月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
27 0
|
2月前
|
存储 安全 PHP
通过eXtplorer+cpolar,搭建个人云存储并实现访问内网服务器数据
通过eXtplorer+cpolar,搭建个人云存储并实现访问内网服务器数据
40 0
|
22天前
|
网络协议 Python
pythonTCP客户端编程连接服务器
【4月更文挑战第6天】本教程介绍了TCP客户端如何连接服务器,包括指定服务器IP和端口、发送连接请求、处理异常、进行数据传输及关闭连接。在Python中,使用`socket`模块创建Socket对象,然后通过`connect()`方法尝试连接服务器 `(server_ip, server_port)`。成功连接后,利用`send()`和`recv()`进行数据交互,记得在通信完成后调用`close()`关闭连接,确保资源释放和程序稳定性。
|
1月前
|
弹性计算 网络安全 虚拟化
ECS数据问题之升级配置预防数据丢失如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
1月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
1月前
|
消息中间件 关系型数据库 MySQL
Flink CDC产品常见问题之把flink cdc同步的数据写入到目标服务器失败如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
1月前
|
网络协议 Ubuntu Linux
「远程开发」VSCode使用SSH远程linux服务器 - 公网远程连接
「远程开发」VSCode使用SSH远程linux服务器 - 公网远程连接
134 0
|
1月前
|
Java 关系型数据库 应用服务中间件
webgis Web 服务器端开发
webgis Web 服务器端开发
24 1
|
1月前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
23天前
|
弹性计算
阿里云ECS使用体验
在申请高校学生免费体验阿里云ECS云服务器后的一些使用体验和感受。