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源码webbrowser多次执行documentcomplete

Delphi xe strpas 遇到的问题

Delphi 运行clsid文件

dededl安卓中保持屏幕常亮

Delphi 程序窗体最大化、组件居中显示代码

Delphi使用tclientdataset时不携带midas.dll的方法

Delphi 测试 tstreamwriter、tstreamreader

Delphi 个人所得税计算函数

Delphi 获取当天是星期几,计算两个日期相隔时间

incsecond:将一个tdatetime变量加减一定数量的秒数

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



打赏

取消

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

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

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

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

评论

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