DATASNAP数据序列之FIREDAC的TFDJSONDataSets
DATASNAP数据序列之FIREDAC的TFDJSONDataSets
DELPHI XE5开始增加了新的数据引擎——FIREDAC,它是跨平台的数据引擎,WINDOWS、LINUX、MAC、APP。。。。。。都可以使用。
随之DATASNAP也增加了新的远程方法返回数据类型——TFDJSONDataSets。
顾名思义TFDJSONDataSets是数据集列表,是多个数据集的集合,DATASNAP通过它一次可以返回多个查询结果数据集。
服务端代码:
function TServerMethods1.QuerySql2(const accountNo, sql: string): TFDJSONDataSets;
var
d: TfrmDB;
begin
Result := nil;
if (accountNo = '') or (sql = '') then
Exit;
d := GetDBPool(accountNo).Lock;
if not Assigned(d) then
Exit;
try
try
SetTraceOn(d);
d.qryOpen.Close;
d.qryOpen.sql.Clear;
d.qryOpen.sql.Text := sql;
d.qryOpen.Open;
Result := TFDJSONDataSets.Create;
TFDJSONDataSetsWriter.ListAdd(Result, '1', d.qryOpen);
except
on e: Exception do
begin
Result := nil;
Log.WriteLog('TServerMethods1.QuerySql2 ' + e.Message);
end;
end;
finally
d.qryOpen.Close;
GetDBPool(accountNo).Unlock(d);
SetTraceOff(d);
end;
end;
客户端代码:
首先引用 Data.FireDACJSONReflect
procedure TForm1.btnQuery2Click(Sender: TObject);
var
LDataSets: TFDJSONDataSets;
LDataSet: TFDDataSet;
begin
DataSource1.DataSet := FDMemTable1;
LDataSets := methods.QuerySql2('0', 'select * from t1');
LDataSet := TFDJSONDataSetsReader.GetListValueByName(LDataSets, '1');
FDMemTable1.Close;
FDMemTable1.Data := LDataSet;
end;
可以看到客户端是使用TFDMemTable内存表,而不是TCLIENTDATASET。
笔者已经多次提到过,FIREDAC引擎是使用TFDMemTable内存表来作为TCLIENTDATASET的替代。
TCLIENTDATASET的数据序列格式是OLEVARIANT,它是微软COM的数据格式。
现在DATASNAP正在去除对微软COM的过分依赖。
转载于:https://www.cnblogs.com/hnxxcxg/p/7468758.html
DATASNAP数据序列之FIREDAC的TFDJSONDataSets相关推荐
- R语言函数:length计算长度、seq生成数据序列、rep将数据对象重复N遍复制、cut将连续变量分割为多水平的因子变量、pretty将连续变量x分成n个区间创建合适的断点、cat数据对象拼接
R语言函数:length函数计算数据对象的长度.seq函数生成数据序列(sequenceÿ
- R语言seq函数生成数据序列实战
R语言seq函数生成数据序列实战 目录 R语言seq函数生成数据序列实战 #基本语法 #seq函数的基础应用
- R语言生成对数线性间隔数据序列(Log-linearly Spaced Sequences)
R语言生成对数线性间隔数据序列(Log-linearly Spaced Sequences) # Log-linearly Spaced Sequences # 类似python中的 np.arang ...
- matlab数据序列的几种滤波器
一维数据序列滤波的matlab代码, 其实和之前做的图像滤波大同小异, 只是图像的噪声情况复杂得多, 而且是二维的. 做这个主要是手上有个心电的的mens传感器, 蓝牙把数据传过来做一个数据的100H ...
- 解扰matlab,数据序列扰乱与解扰MATLAB实现及性能分析—利用m序列.doc
数据序列扰乱与解扰MATLAB实现及性能分析-利用m序列 <数据序列的扰乱与解扰的MATLAB实现及性能分析-利用17级m序列> 第 PAGE 1页 共20页 数据序列的扰乱与解扰的MAT ...
- Python中的数据序列(元组、集合、字典)
Python中的数据序列 一.元组的定义与使用 1.为什么需要元组 思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改. ...
- 软件测试 —— Python(三)之数据序列(容器)
其他Python知识参考:Python学习路线 目录 一.容器 二.字符串(str) 1.定义 2.下标 3.切⽚ 4.字符串的查找⽅法 find 5.字符串的替换⽅法 replace 6.字符串的拆 ...
- 数据结构与算法——给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和
求最大的子序列和问题 给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和. 比如:输入-2, 11, -4, 13, -5, -2: 答案是20(11,-4,13三 ...
- Python基础_第5章_Python中的数据序列
Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...
- Python数据序列(2)
今天把后半部分的数据序列补上了,假期就放一天有些疲劳,所以耽误了一天,大家见谅. 目录 一.知识点补充 二.元组的定义与使用 1.为什么需要元组 2.元组的定义 3.元组的相关操作方法 三.字典--P ...
最新文章
- 新版IntelliJ IDEA Web项目配置完整流程
- kafka的topic和分区策略——log entry和消息id索引文件
- 诺基亚 IoT安全白皮书
- 【leetcode】472. Concatenated Words
- php写新闻浏览历史,PHP实现浏览历史记录
- win7 VS2008 不需新建工程 命令行编译lua5.1.5
- OData元数据在浏览器里以Feed视图显示的解决办法
- [C# 项目实战]: 制作一个备忘录(经典)
- 越努力越幸运,三年了!!!
- 售前工程师的成长---一个老员工的经验之谈(三)
- java welcome-file_通过JSF项目中的welcome-file设置默认主页
- linux shell 高级编程,shell高级编程(带365个实例源码)
- 解析数论导轮中的数学实验(python)
- java毕业设计网站ssm医院医药药品管理系统
- javaweb实现不刷新网页更改页面内容
- Archlinux连接HDMI分屏后没声音
- ucenter php7.0版,UCenter1.5.0UCenter Home1.5Discuz! 7.0 集成安装包
- linux alarm函数clock,linux c之alarm函数的使用,定时器的实现
- “年薪百万”的视频剪辑师?Adobe专家让这一切都成为可能
- 半次元cos图片爬虫
热门文章
- lol游戏挂机软件_“本不想挂机,但系统不让重连!”LOL成“挂机联盟”,5局3挂机...
- Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(
- Spring Framework 常用工具类一
- 线程池(ThreadPoolExecutor ) 的 创建、关闭、监控
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_17-页面查询接口定义-定义模型-需求分析和模型类...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
- 02.规划过程组表格-活动成本估算
- MDK 中 [WEAK] 的作用
- Android 所遇问题(一)
- ubuntu firefox上看视频,安装flash啊