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

时间: 2024-10-10 11:11:29

怎样提交FIREDAC数据集的DELTA到中间件然后保存进数据库的相关文章

Delphi处理数据网格DBGrid的编辑框 获取还没有提交到数据集的字段文本

(*//标题:处理数据网格的编辑框说明:示例添加焦点颜色;获取还没有提交到数据集的字段文本设计:Zswang日期:2002-03-31支持:[email protected]//*) ///////Begin   Sourcefunction   GetDBGridEdit(mDBGrid:   TDBGrid):   TEdit;var    I:   Integer;begin    Result   :=   nil;    if   not   Assigned(mDBGrid)   t

firedac数据集的序列和还原

procedure TForm1.Button1Click(Sender: TObject);var stream, stream2: TMemoryStream; buf: TBytes;begin // 查询 FDQuery1.Close; FDQuery1.SQL.Clear;FDQuery1.Open('select * from t2'); // 序列为流 stream := TMemoryStream.Create; FDQuery1.SaveToStream(stream, TFD

关于 xpo 修改字段值,提交成功后,却没有保存到数据库中的一个原因。

xaf项目中,遇到一个奇怪的现象,在控制器中,修改了当前视图的对象的字段之后, 执行ObjectSpace.CommitChanges();成功,没有任何异常, 调试观察字段的值的确已经改变,但是却没有成功提交到数据库中. 经排查,是xpo类中 override 了 OnChanged(string propertyName, object oldValue, object newValue) 函数,但函数中没有执行 base.OnChanged(propertyName, oldValue,

Tensorflow机器学习入门——cifar10数据集的读取、展示与保存

基本信息 官网:http://www.cs.toronto.edu/~kriz/cifar.html 共60000张图片:50000张用于训练.10000张用于测试 图片大小为:32X32 数据集图片分为10类:每类6000张 数据集下载解压后的目录结构: 读取.打印和保存数据集中指定的图片: import pickle import matplotlib.pyplot as plt CIFAR_DIR ="cifar10_data/cifar-10-batches-bin/data_batch

数据库事务知识

什么是事务? 事务,是工作中的基本逻辑单元.一个事务可能包括数据库的一系列操作,而一个完整的事务保证这些操作都被正确地同步到数据库中,不会发生数据不完整或者错误,或者受到其他干扰. 事务的4个特性 原子性:即作为一个事务,它是不可分割的整体,只有全部操作都完成了,才算结束:其中任何一个操作执行失败,整个事务都要撤销. 一致性:即事务不能破坏数据库的完整性和业务逻辑的一致性.事务不管成功还是失败,事务结束时,整个数据库内部数据都是正确的. 隔离性:即在并发的数据库操作时,不同的事务操作相同的数据时

jquery sortable 提交数据保存 使用问题

最终效果图 有几个坑这里分享一下. 我用的是cloud-admin,一个bootstrap的CSS模板. jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license */ jQuery UI - v1.11.1 - 2014-08-24 jquery 的sort 功能是在ui包里面的,所以需要UI包引入 一开始引入页面没效果,新建一个单独的页面正常使用,又放入完整页面又正常了,真不知道什么情况.反复试一下

jbpmAPI-8

8.1. Process Instance State jBPM允许某些信息的持久性存储.本章描述了这些不同类型的持久性,以及如何配置它们.存储的信息的一个例子是运行时状态的过程.存储过程运行时状态是必要的,为了能够继续执行流程实例在任何时候,如果出现错误.此外,过程定义本身,和历史信息(日志的当前和以前的进程状态已经)也可以坚持. 8.1.1. Runtime State 每当开始一个过程,一个流程实例被创建时,它表示在特定上下文的执行过程.例如,当执行一个过程,指定如何处理销售订单,一个流程

ORM单表操作

本文目录 一.ORM简介 二.全局配置 三.搞搞搞 一.ORM简介 .ORM是“对象-关系-映射”的简称 .MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以,轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动. 二.全局配置 .单表是相对简单的Django项目,我们再次进行对单表的增删改查操作,话不多说,项目开始. 1.setting.py 文件配置静态路径.

一文讲透微服务下如何保证事务的一致性

原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 从本地事务到分布式事务的演变 什么是事务?回答这个问题之前,我们先来看一个经典的场景:支付宝等交易平台的转账.假设小明需要用支付宝给小红转账 100000 元,此时,小明帐号会少 100000 元,而小红帐号会多 100000 元.如果在转账过程中系统崩溃了,小明帐号少 100000 元,而小红帐号金额不变,就会出大问题,因此这个时候我