怎样提交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;

 

转载于:https://www.cnblogs.com/hnxxcxg/p/3974440.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值