首页 > 代码库 > kbmmw 中JSON 中使用SQL 查询
kbmmw 中JSON 中使用SQL 查询
前面讲到了kbmmw 的JSON 对象操作,如何快速的查找JSON 中的值?
一种办法就是通过遍历的方法,其实在kbmmw 还有一种灵活的查询方式,
就是通过SQL 方式查询JSON 中的值。也就是说用TKbmmwmemSQL 控件来实现。
TKbmmwmemSQL 也可以用来查询 XML 和 CSV 文件,今天只说一下JSON 的查询。
我们首先在窗体中放一个Tkbmmwmemsql 控件,
如图设置其属性。
直接使用kbmmwmemSQL控件查询JSON , 首先需要把json串 保存成文本文件。
这里提供一个简单的jSON 文件,内容如下:
{"result":[{"ID":1,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":2,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":3,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":4,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":5,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":6,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":7,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":8,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":9,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"},{"ID":10,"name":"xalion","date":"2017-07-05T23:05:48.290+08:00"}]}
文件名为aaa.json,存放在当前目录下。
然后我们执行以下代码
procedure TForm1.Button5Click(Sender: TObject);var sqls:string;begin sqls:=‘SELECT ID,name,date FROM datafile FILE(JSON,‘‘.\aaa.json‘‘)‘ +‘ SUBSET ‘‘/result/.*‘‘‘ +‘ ORDER BY ID‘; memo2.Lines.Clear; memo2.Lines.Add(sqls); kbmmwmemsql1.ExecSQL(sqls);end;
运行结果如下
加入条件,继续查询。
procedure TForm1.Button5Click(Sender: TObject);var sqls:string;begin sqls:=‘SELECT ID,name,date FROM datafile FILE(JSON,‘‘.\aaa.json‘‘)‘ +‘ SUBSET ‘‘/result/.*‘‘‘ +‘ where ID=5‘ +‘ ORDER BY ID‘; memo2.Lines.Clear; memo2.Lines.Add(sqls); kbmmwmemsql1.ExecSQL(sqls);end;
运行结果如下:
怎么样,方便不?
有的人可能觉得要存成文件,不方便,怎么办?
好吧,我们换个姿势,再来。
我们可以直接使用Tkbmmwmemsql 直接把JSON 对象加进去,然后像正常的表进行查询。
代码如下:
procedure TForm1.Button6Click(Sender: TObject);var js:TkbmMWJSONStreamer; fjson:TkbmMWONCustomObject; sqls:string;begin js:=TkbmMWJSONStreamer.Create; fjson:=js.LoadFromUTF16String(memo1.Text); js.Free; kbmmwmemsql1.Tables.Add(‘MYJSONT‘,FJSON); sqls:=‘SELECT ID,name,date FROM MYJSON‘ +‘ SUBSET ‘‘/result/.*‘‘‘ +‘ ORDER BY ID‘; memo2.Lines.Clear; memo2.Lines.Add(sqls); kbmmwmemsql1.ExecSQL(sqls);end;
运行结果如图
同样可以加入查询条件
procedure TForm1.Button6Click(Sender: TObject);var js:TkbmMWJSONStreamer; fjson:TkbmMWONCustomObject; sqls:string;begin js:=TkbmMWJSONStreamer.Create; fjson:=js.LoadFromUTF16String(memo1.Text); js.Free; kbmmwmemsql1.Tables.Add(‘MYJSONT‘,FJSON); sqls:=‘SELECT ID,name,date FROM MYJSON‘ +‘ SUBSET ‘‘/result/.*‘‘‘ +‘ where ID=6‘ +‘ ORDER BY ID‘; memo2.Lines.Clear; memo2.Lines.Add(sqls); kbmmwmemsql1.ExecSQL(sqls);end;
运行结果如图
打完收功。
注意,要运行以上例子,请引用kbmMWJSON, kbmMWSQLJSONAPI,kbmMWObjectNotation
这几个单元。
kbmmw 中JSON 中使用SQL 查询
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。