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;
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18588108
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2020-12-05 delphi助手类