DELPHI WEB SERVICE 多表提交的事务管理


本文整理自网络,侵删。

 
我自己的测试代码,服务器端做一个接口方法,客户端调用该方法。2个表的 Delta,写死:(也就是直接用 ADeltas[0] 这样就可以把数组元素读出来)。以下方法是写死的,但可以写成一个通用方法,服务器端通过表名,找到对应的ClientDataSet来提交。

客户端:Intf.SaveItems(VarArrayOf([ClientDataSet1.Delta, ClientDataSet2.Delta]));

服务器端:

procedure TTestItems.SaveItems(ADeltas: Variant);
var
  D1, D2: Variant;
begin
  //测试服务器端事务
  D1 := ADeltas[0];
  D2 := ADeltas[1];


  ClientDataSet1.Data := D1;
  ClientDataSet2.Data := D2;


  //todo: 开始事务
  if ClientDataSet1.ApplyUpdates(0)>0 then raise Exception.Create('提交失败');

  if ClientDataSet2.ApplyUpdates(0)>0 then raise Exception.Create('提交失败');
  //todo: 结束事务
end;


-------------


通用提交:以下代码测试通过
客户端:Intf.SaveItems(VarArrayOf(['ITEMS', 'Items_Content']),  VarArrayOf([ClientDataSet1.Delta, ClientDataSet2.Delta]), 2);
服务器端:
procedure TTestItems.SaveItems(TbNames, ADeltas: Variant; TbCount: Integer);
var
  D1: Variant;
  Tb1: string;
  i: Integer;
  Cld: TClientDataSet;
begin


//todo: 开始事务
  for i := 0 to TbCount - 1 do
  begin
    Cld := Self.GetCldByTb(TbNames[i]);
    Cld.Data := ADeltas[i];
    if Cld.ApplyUpdates(0) > 0 then raise Exception.Create('提交失败');
  end;
  //todo: 结束事务


end;
――――――――――――――――
原文链接:https://blog.csdn.net/pcplayer/article/details/69375807

相关阅读 >>

Delphi firedac 获取 insert 记录的自增 id

Delphi 弹出输入框的inputquery, inputquery 函数用法

Delphi 清空某个form的控件内容,用tag来判断

Delphi 解决webbrowser不能复制的问题

python4Delphi 示例应用程序在 Delphi 应用程序中运行简单的 python 脚本

Delphi memo 字符串换行

Delphi 四舍五入保留一位或两位小数

Delphi trayicon控件,如何实现窗口最小化的时候到系统托盘?

Delphi 通用字符串函数

Delphi 建立最小的应用程序

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...