JSON序列——主从表查询

客户端代码:

procedure TForm1.Button4Click(Sender: TObject);
// 主从表 查询
begin
var url: TynUrl := TynUrl.Create;
var serial: TynJsonCross := TynJsonCross.Create;
var send: TMemoryStream := TMemoryStream.Create;
try
url.url := Edit1.Text;
url.command := 'query92'; // 命令
url.params.Add('count=2'); // 查询几个表的数据
url.params.Add('accountno=1'); // 帐套号
url.params.Add('sql=select * from tgoods'); // 查询SQL
url.params.Add('sql2=select * from tunit'); // 查询SQL2
serial.Text := IdHTTP1.Post(url.text, send);
Memo1.Text := serial.Text;
// serial.ReadFDMemTable(0, FDMemTable1);
// serial.ReadFDMemTable(1, FDMemTable2);
finally
serial.DisposeOf;
send.DisposeOf;
url.DisposeOf;
end;
end;

  服务端返回JSON:

{
"tables": [
{
"cols": [
{
"name": "goodsid",
"size": 8,
"type": "string"
},
{
"name": "barcode",
"size": 18,
"type": "string"
},
{
"name": "goodsname",
"size": 50,
"type": "string"
},
{
"name": "pyjm",
"size": 50,
"type": "string"
},
{
"name": "gg",
"size": 30,
"type": "string"
},
{
"name": "kindid",
"size": 8,
"type": "string"
},
{
"name": "jj",
"size": 4,
"type": "float"
},
{
"name": "lsj",
"size": 4,
"type": "float"
},
{
"name": "kcxx",
"size": 4,
"type": "float"
},
{
"name": "kcsx",
"size": 4,
"type": "float"
},
{
"name": "unitid",
"size": 8,
"type": "string"
},
{
"name": "unitname",
"size": 10,
"type": "string"
},
{
"name": "kindname",
"size": 30,
"type": "string"
}
],
"rows": [
{
"goodsid": "100036",
"barcode": "100036",
"goodsname": "秋冬四件套哦",
"pyjm": "",
"gg": "",
"kindid": "12002",
"jj": 100,
"lsj": 430,
"kcxx": 50,
"kcsx": 5,
"unitid": "15",
"unitname": "箱套",
"kindname": "床上用品"
},
{
"goodsid": "100050",
"barcode": "100050",
"goodsname": "天堂伞",
"pyjm": "wrth",
"gg": "",
"kindid": "1",
"jj": 10,
"lsj": 0,
"kcxx": 0,
"kcsx": 0,
"unitid": "15",
"unitname": "箱套",
"kindname": "1111"
},
{
"goodsid": "100054",
"barcode": "100054",
"goodsname": "我们的 哎",
"pyjm": "WMD D7",
"gg": "",
"kindid": "11002",
"jj": 0,
"lsj": 0,
"kcxx": 0,
"kcsx": 0,
"unitid": "18",
"unitname": "公斤",
"kindname": "饮料"
},
{
"goodsid": "100055",
"barcode": "100055",
"goodsname": "娃哈哈纯净水500ML",
"pyjm": "WHHCJS500ML",
"gg": "",
"kindid": "11001",
"jj": 0,
"lsj": 0,
"kcxx": 0,
"kcsx": 0,
"unitid": "18",
"unitname": "公斤",
"kindname": "奶粉"
}
]
},
{
"cols": [
{
"name": "unitid",
"size": 4,
"type": "string"
},
{
"name": "unitname",
"size": 6,
"type": "string"
}
],
"rows": [
{
"unitid": "11",
"unitname": "个"
},
{
"unitid": "12",
"unitname": "双"
}
]
}
]
}

  

JSON序列——主从表查询的更多相关文章

  1. C#主从表查询

    软件的使用必然涉及到主表和子表的操作,我们先在SQLite中创建子表.比如 创建一学生信息表做主表,再创建一个学生成绩表做子表.然后我们在程序中成绩 方法来连接子表. 判断bindingsource中 ...

  2. 咏南中间件JSON序列类

    咏南中间件JSON序列类 1)支持跨平台.跨语言 2)支持主从表数据序列.还原,支持任意数量的表 主从表数据序列为JSON字符串样式: { "rows": [ { "FD ...

  3. Django模板及表查询笔记

    模板层 后端朝html页面传递数据 两种给html页面传递数据的方式 第一种: render(request,'index.html',{'user_list':user_list}) 第二种 ren ...

  4. 【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON查询

    mybatis实现 主从表 left join  1:n 一对多 分页查询   主表从表都有查询条件+count 需求: ======================================= ...

  5. Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

    count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age ...

  6. mysql中,创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?

    需求描述: 在mysql数据库中,创建包含json数据类型的表.记录下,在创建的过程中,需要注意的问题. 操作过程: 1.通过以下的语句,创建包含json数据类型的表 mysql> create ...

  7. Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)

    Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都 ...

  8. django(3) 一对多跨表查询、ajax、多对多

    1.一对多跨表查询获取数据的三种形式:对象.字典.元组 例:有host与business两张表,host与business的id字段关联,business在host表中的对象名是b,  通过查询hos ...

  9. Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)

    摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django ORM 常用字段和参数: 常用字段:#AutoFieldint自增列,必须填入参数primary_key = True,当model中 ...

随机推荐

  1. css之hover改变子元素和其他元素样式

    参考地址:链接 +表示下一级元素,>表示子元素 <!DOCTYPE html> <html> <head lang="en"> <m ...

  2. MVC,MVP和MVVM的区别

     MVC   转载标名出处  dub 从这幅图可以看到,我们可以看到在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑. 在MVC模型 ...

  3. 使用navicat premium将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL

    有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle. 很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面. ...

  4. charles mock方法及问题

    一. 抓包后修改返回数据1.生成一个完成的请求返回信息1.charles抓取一个完整的请求,返回数据2.然后找到该请求,右键“save response”,将该完整请求返回文件保存至本地3.修改本地需 ...

  5. 查看Java JVM参数配置信息命令

    查看Java JVM参数配置信息命令 java -XX:+PrintCommandLineFlags jvm运行时状态的参数,可以很快找出问题所在.现在把几个命令记录一下:1. jstat这个命令对于 ...

  6. 自己实现一个和PYTHON的库一模一样的sha_256算法

    同时在看一本书<从零开始-自己动手写区块链>, 这书讲得易懂,我也动手实践一下. 这个算法和python3本身的实现相同, 所以,同样的字串,摘要是相同的. import struct i ...

  7. day8--socketserver作业

    fileno()文件描述符 handle_request()处理单个请求 server_forever(poll_interval=0.5)处理多个请求,poll_interval每0.5秒检测是否关 ...

  8. python全栈开发day39-CSS继承性和层叠性、权重问题、盒模型和其属性、文本级标签和块级标签、浮动

    一.上次内容回顾 1.CSS的三种引入方式: 行内式 内接式 外接式 链接式 导入式 2.基础选择器和高级选择器 1)标签选择器 p{} 2)  id选择器 #nva{} 3) 类选择器 .nva{} ...

  9. python全栈开发day28-网络编程之粘包、解决粘包,上传和下载的作业

    一.昨日内容回顾 1. tcp和udp编码 2. 自定义mysocket解决编码问题 二.今日内容总结 1.粘包 1)产生粘包原因: (1).接收方不知道消息之间的边界,不知道一次性要取多少字节的数据 ...

  10. Nordic Collegiate Programming Contest NCPC 2017-Problem G Galactic Collegiate Programming Contest

    题目大意:有n( n<1e5 )只队伍参加程序竞赛,然后给m个信息,每个信息告诉你第p 个队伍过了一题,并且告诉你罚时是多少,让你输入每个信息之后,第一个队伍的 排名. 思路:一眼看过去就像数据 ...