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;

  • 相关阅读:
    centos7 yum 安装mariadb
    curl 获取外网IP
    ansible之一:安装与配置
    第一步 django的下载安装
    命名空间的三种引用方式:非限定名称、限定名称、完全限定名称
    重温PHP之快速排序
    PHP实现文件下载的核心代码
    PHP常量定义之define与const对比
    ThinkPHP中I('post.')与create()方法的对比
    重温PHP之选择排序
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/3974440.html
Copyright © 2011-2022 走看看