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;

  • 相关阅读:
    <img />标签 alt title
    ubuntu中rar与unrar用法详解
    vi及缩进设置
    ubuntu下读取数据库中文乱码解决
    ubuntu下phpstorm无法输入中文的解决办法
    ubuntu下mysqli_connect()显示未定义,mysqli_fetch_all()显示未定义 解决方法
    权限控制
    NULL
    ubuntu下chromium 安装flash player
    手把手教你把Vim改装成一个IDE编程环境(图文)
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/3974440.html
Copyright © 2011-2022 走看看