delphi内存表

delphi内存表

delphi内存表最大的特点就是有data和delta属性,有了它,极大地简化了数据库CURD编程。这是其他语言所不具备的优势。

在当前流行软件平台化,IDL盛行的时候,可能也是其最大的缺陷。

就算FPC几乎山寨了整个delphi的数据集体系,但内存表的data和delta属性就是山寨不了。

1)TClientDataSet

早年datasnap基于COM,datasnap远程方法函数可以返回OLEVariant,TClientDataSet.Data和TClientDataSet.Delta的数据格式都是OLEVariant。

delphi数据集通过TDataSetProvider桥梁转换为OLEVariant。

DSP+CDS组合,firedac,unidac,ado,bde,dbx。。所有数据库引擎都支持。

CDS有一个惹人厌的问题,midas.dll,要是机器上有多个版本的midas.dll,简直是无限麻烦。解决方法:在工程文件 uses midas.dll。

CDS后来也支持linux,部署的时候,相应的要带一个特有的libmidas.so.2动态库。

CDS这一点是很让人诟病的。

1.1)查询

        qry.Close;
        qry.SQL.Clear;
        qry.SQL.Text := req.asStr['sql' + i.tostring];
     //qry.open; //此行代码千万不能有,否则会查询二次 result
:= dsp.Data;

1.2)保存

        qry.Close;
        qry.SQL.Clear;
        qry.SQL.Text := 'select * from table where 1=2';
        dsp.ApplyUpdates(delta, 0, err); //delta是客户端提交上来的数据
        if err > 0 then
        begin
          //保存失败
        end;

2)TFDMemTable

 delphi为了支持跨OS,废掉了DBX,引入全新的firedac数据库引擎。datasnap也不再基于COM(COM势微)。

带来了全新的firedac内存表TFDMemTable。

最大的缺陷:只能使用firedac,不能支持ado,bde,dbx,unidac。。其他数据库引擎。

uses FireDAC.Stan.StorageBin, FireDAC.Stan.Intf;

2.1)查询

        qry.Close;
        qry.SQL.Clear;
        qry.SQL.Text := 'select * from table';
        db.qry.Open;
        TMemoryStream(ms).Clear;
        qry.SaveToStream(ms, sfBinary);

2.2)保存

 服务端

复制代码
        qry.Close;
        qry.SQL.Clear;
        qry.SQL.Text := 'select from table where 1=2';
        qry.LoadFromStream(ms, sfBinary);
        err := qry.ApplyUpdates;
        if err > 0 then
        begin
      //保存失败
        end;
复制代码

 客户端

复制代码

    TFDMemTable.CachedUpdates := True;  //此属性必须设置
    TFDMemTable.ResourceOptions.StoreItems := TFDMemTable.ResourceOptions.StoreItems - [siData, siVisible]; //只提交修改的数据
//保存失败
      TFDMemTable.CancelUpdates;
      TFDMemTable.ResourceOptions.StoreItems := TFDMemTable.ResourceOptions.StoreItems + [siData, siVisible];
//保存成功
      TFDMemTable.MergeChangeLog;

复制代码

 

posted @   delphi中间件  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2020-12-05 delphi助手类
点击右上角即可分享
微信分享提示