zoukankan      html  css  js  c++  java
  • 怎样提交FIREDAC数据集的DELTA到中间件然后保存进数据库

    你可以在客户端序列FireDAC数据集的DELTA , 将序列后的STREAM发送给中间件,

    中间件的TFDQuery或TFDMemTable调用LOADFROMSTREAM()方法加载流,

    然后调用ApplyUpdates()将数据保存进数据库中。

    怎样转换TFDQuery或TFDMemTable的Delta为STREAM?

    你将需要设置FDQuery或TFDMemTable的ResourceOptions.StoreItems 为 [siDelta]或 [siMeta, siDelta]。

    然后调用SaveToStream()方法即可。

    下面是演示用的代码:

    var
    Stream:TMemoryStream;
    begin
    // qryDataSource have 100 records,modified 1 record,so have 1
    delta record
    Stream := TMemoryStream.Create;
    qryDataSource.ResourceOptions.StoreItems :=
    [siData,siMeta,siDelta];
    Stream := TMemoryStream.Create;
    qryDataSource.SaveToStream(Stream);
    //restore StoreItems
    // qryDataSource.ResourceOptions.StoreItems :=
    [siData,siMeta,siDelta];

    Stream.Position := 0;
    // remote app,transports stream by http
    qryRemote.Close;
    qryRemote.CachedUpdates := True;
    qryRemote.UpdateOptions.KeyFields := 'ID';
    qryRemote.UpdateOptions.UpdateTableName := 'BAS_COLORS';
    qryRemote.SQL.Text := 'select * from BAS_COLORS where 1=0';

    qryRemote.ResourceOptions.StoreItems := [siMeta,siDelta,siData];
    //It load 100 reocrds,not only 1 delta record
    qryRemote.LoadFromStream(Stream);
    Stream.Free;
    // commit and refresh
    qryRemote.ApplyUpdates();
    qryDataSource.CommitUpdates;
    qryDataSource.Refresh;

    end;

  • 相关阅读:
    VSTO安装部署(完美解决XP+2007)
    尝试Office 2003 VSTO的开发、部署
    数据容量大小
    Nginx 学习
    Windows环境下使用Nginx搭建负载均衡
    HTML块元素与内联元素嵌套规则
    js中try、catch、finally的执行规则
    总结下var、let 和 const 的区别
    解决window.onload延迟加载问题
    移动端meta设置大全
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/3974440.html
Copyright © 2011-2022 走看看