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相关推荐

  1. R语言函数:length计算长度、seq生成数据序列、rep将数据对象重复N遍复制、cut将连续变量分割为多水平的因子变量、pretty将连续变量x分成n个区间创建合适的断点、cat数据对象拼接

    R语言函数:length函数计算数据对象的长度.seq函数生成数据序列(sequenceÿ

  2. R语言seq函数生成数据序列实战

    R语言seq函数生成数据序列实战 目录 R语言seq函数生成数据序列实战 #基本语法 #seq函数的基础应用

  3. R语言生成对数线性间隔数据序列(Log-linearly Spaced Sequences)

    R语言生成对数线性间隔数据序列(Log-linearly Spaced Sequences) # Log-linearly Spaced Sequences # 类似python中的 np.arang ...

  4. matlab数据序列的几种滤波器

    一维数据序列滤波的matlab代码, 其实和之前做的图像滤波大同小异, 只是图像的噪声情况复杂得多, 而且是二维的. 做这个主要是手上有个心电的的mens传感器, 蓝牙把数据传过来做一个数据的100H ...

  5. 解扰matlab,数据序列扰乱与解扰MATLAB实现及性能分析—利用m序列.doc

    数据序列扰乱与解扰MATLAB实现及性能分析-利用m序列 <数据序列的扰乱与解扰的MATLAB实现及性能分析-利用17级m序列> 第 PAGE 1页 共20页 数据序列的扰乱与解扰的MAT ...

  6. Python中的数据序列(元组、集合、字典)

    Python中的数据序列 一.元组的定义与使用 1.为什么需要元组 思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改. ...

  7. 软件测试 —— Python(三)之数据序列(容器)

    其他Python知识参考:Python学习路线 目录 一.容器 二.字符串(str) 1.定义 2.下标 3.切⽚ 4.字符串的查找⽅法 find 5.字符串的替换⽅法 replace 6.字符串的拆 ...

  8. 数据结构与算法——给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和

    求最大的子序列和问题 给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和. 比如:输入-2, 11, -4, 13, -5, -2: 答案是20(11,-4,13三 ...

  9. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  10. Python数据序列(2)

    今天把后半部分的数据序列补上了,假期就放一天有些疲劳,所以耽误了一天,大家见谅. 目录 一.知识点补充 二.元组的定义与使用 1.为什么需要元组 2.元组的定义 3.元组的相关操作方法 三.字典--P ...

最新文章

  1. 新版IntelliJ IDEA Web项目配置完整流程
  2. kafka的topic和分区策略——log entry和消息id索引文件
  3. 诺基亚 IoT安全白皮书
  4. 【leetcode】472. Concatenated Words
  5. php写新闻浏览历史,PHP实现浏览历史记录
  6. win7 VS2008 不需新建工程 命令行编译lua5.1.5
  7. OData元数据在浏览器里以Feed视图显示的解决办法
  8. [C# 项目实战]: 制作一个备忘录(经典)
  9. 越努力越幸运,三年了!!!
  10. 售前工程师的成长---一个老员工的经验之谈(三)
  11. java welcome-file_通过JSF项目中的welcome-file设置默认主页
  12. linux shell 高级编程,shell高级编程(带365个实例源码)
  13. 解析数论导轮中的数学实验(python)
  14. java毕业设计网站ssm医院医药药品管理系统
  15. javaweb实现不刷新网页更改页面内容
  16. Archlinux连接HDMI分屏后没声音
  17. ucenter php7.0版,UCenter1.5.0UCenter Home1.5Discuz! 7.0 集成安装包
  18. linux alarm函数clock,linux c之alarm函数的使用,定时器的实现
  19. “年薪百万”的视频剪辑师?Adobe专家让这一切都成为可能
  20. 半次元cos图片爬虫

热门文章

  1. lol游戏挂机软件_“本不想挂机,但系统不让重连!”LOL成“挂机联盟”,5局3挂机...
  2. Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(
  3. Spring Framework 常用工具类一
  4. 线程池(ThreadPoolExecutor ) 的 创建、关闭、监控
  5. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_17-页面查询接口定义-定义模型-需求分析和模型类...
  6. 小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
  7. 02.规划过程组表格-活动成本估算
  8. MDK 中 [WEAK] 的作用
  9. Android 所遇问题(一)
  10. ubuntu firefox上看视频,安装flash啊