kbmmw 中JSON 中使用SQL 查询

简介: 前面讲到了kbmmw 的JSON 对象操作,如何快速的查找JSON 中的值? 一种办法就是通过遍历的方法,其实在kbmmw 还有一种灵活的查询方式, 就是通过SQL 方式查询JSON 中的值。也就是说用TKbmmwmemSQL 控件来实现。

前面讲到了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

这几个单元。

 

目录
相关文章
|
15天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
52 9
|
1月前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
133 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
2月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
42 8
|
2月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
70 4
|
2月前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
2月前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
187 10
|
2月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
2月前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
38 0
|
3月前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色