TDBXJSONStream(BERLIN新增)的使用

DELPHI 10.1 BERLIN新增TDBXJSONStream类,用于方便地将数据序列为JSON,和将JSON还原出来数据。

DATASNAP远程方法也相应地增加了支持返回TDBXJSONStream。必须引用 Data.DBXCommon单元。

url rest方式呼叫远程方法,直接返回JSON数据。

易博龙关于它有这么一段注释:

A TDBXJSONStream type may be used as a parameter or return value in server methods.
Use this type to pass a JSON stream between DataSnap servers and clients.
A TDBXJSONStream is either writable or readable, but not both.
IN parameters are used to pass a readable TDBXJSONStream to a server method.
OUT parameters and return values are used to pass a TDBXJSONStream that the server method has written.

下面的代码仅供语法演示,无任何实际意义。

服务端代码:

function TServerMethods1.QuerySql4(const accountNo, sql: string): TDBXJSONStream;

var
d: TfrmDB;

procedure WritePair(const sProperty, sFieldName, sFieldValue: string);
begin
Result.Writer.WritePropertyName(sProperty);
Result.Writer.WriteValue(sFieldValue);
end;

begin
Result := nil;
if (accountNo = ‘‘) or (sql = ‘‘) then
Exit;
d := GetDBPool(accountNo).Lock;
if not Assigned(d) then
Exit;
try
d.qryOpen.Close;
d.qryOpen.sql.Clear;
d.qryOpen.sql.Text := sql;
d.qryOpen.Open;
Result := TDBXJSONStream.Create;
Result.Writer.WriteStartArray;
try
while not d.qryOpen.Eof do
begin
try
Result.Writer.WriteStartObject;
// WritePair();

finally
Result.Writer.WriteEndObject;
d.qryOpen.Next;
end;
end;
finally
Result.Writer.WriteEndArray;
Result.Writer.Close;
end;
finally
d.qryOpen.Close;
GetDBPool(accountNo).Unlock(d);
end;
end;

客户端代码:

procedure TForm5.Button1Click(Sender: TObject);
var
aServer : TServerMethods1Client;
js : TDBXJSONStream;
begin
aServer := TServerMethods1Client.Create(Self.SQLConnection1.DBXConnection);
try
js := aServer.QueryHotel(Edit1.Text);
js.Reader.Rewind;
while (js.Reader.Read) do
begin
case js.Reader.TokenType of
TJsonToken.StartArray:
begin
while (js.Reader.Read) do
begin
case js.Reader.TokenType of
TJsonToken.PropertyName:
begin
ListView1.Items.Add.Text := js.Reader.Value.ToString + ‘: ‘ + js.Reader.ReadAsString;
end;
end;
end;
end;
end;
end;
finally
aServer.Free;
end;
end;

时间: 2025-01-14 09:10:57

TDBXJSONStream(BERLIN新增)的使用的相关文章

JDK各版本新增的主要特性总结

JDK1.5新特性: 1.自动装箱与拆箱: 2.枚举 3.静态导入,如:import staticjava.lang.System.out 4.可变参数(Varargs) 5.内省(Introspector),主要用于操作JavaBean中的属性,通过getXxx/setXxx.一般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/

ssm项目之新增员工

点新增按钮会出现新增的窗口,查询bootstrap文档的js里面有案例 表单的样例也可以参照css里面的 在index.jsp 的body最上面加上模态框 <!-- 员工添加模态框 --> <!-- Modal --> <div class="modal fade" id="empAddModal" tabindex="-1" role="dialog" aria-labelledby="

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc

HTML5之新增的元素

今天打开博客看到自己有了一个小粉丝,说实话还是蛮开心的,坚持写博客大半年了,终于迎来了自己的第一个小伙伴.总算是坚持了那么久的事情看到了结果吧. 前几天参加了我们学院老师的比赛---<青年教师大赛的初赛>.我被我们老师拉去做了义工-----计时员.看了所有老师的比赛,虽然都特别好,但是让我印象深刻的还是一个HTMl5+CSS3的课程.看到那种炫酷的效果,我瞬间都被吸引住了.所以忙完了手头上的作业,就从别人那里要到了HTML5的教程,开始了我的学习HTML5之路.虽然看了6节课了,还是没有学到老

Excel 2016新增函数之IFS

Excel 2016新增函数之IFS 在2016年1月功能更新中,EXCEL 2016新增几个常用重要函数,主要有:ifs,switch,maxifs,minifs,concat,textjoin等. 注意,要能使用上述函数,Office的版本很重要,并不是所有的Office 2016能使用.建议 在https://products.office.com/zh-CN/try试用Office 365,安装最新版的Office 2016. 你也可以在通过Office 365安装程序进行在线安装.安装

2015 年度新增开源软件排名 TOP 100

收藏了,以备不时之需,选型的时候,可以优先从其中考虑了. 2015 年度新增开源软件排名 TOP 100 http://www.oschina.net/news/69808/2015-annual-ranking-top-100-new-open-source-software

C++11新特性应用--介绍几个新增的便利算法(更改容器中元素顺序的算法)

昨天罗列了C++11中新增的几个算法,包括 find_if_not.all_of.any_of.none_of四个算法,这四个算法的共同点就是Non-modifying sequence operations. 所以,今天就来八一八C++11中新增的算法,而这些算法的特点是:Modifying sequence operations. copy算法我们很熟悉,这里介绍一下C++11新增的copy_n. copy_n 原型: template <class InputIterator, class

中国最好的外汇平台新增手机客户端让你玩转世界

NordFX公司很高兴向大家推出可以在iPhone和Android操作系统上进行外汇交易的免费应用程序.从现在起,通过 NordFX MT4 iTrader 和 NordFX MT4 droidTrader 应用程序,您就可以使用手机或者平板电脑随时随地接入移动互联网并进行外汇交易! NordFX公司的移动交易应用配备了友好的用户界面,并与功能丰富的MetaTrader4交易平台相结合. 主要功能: 在即时图表上进行实时交易 能够使用所有可用的交易工具 打开买单和卖单 打开挂单 给定单设置止损价

PHP5.2至5.6的新增功能详解

截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5.3 [注].因为 PHP 那"集百家之长"的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征. PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束 PHP5.2:JSON 支持 PHP5.3:弃用的功能,匿名函数