按照功能分类,不管是直接的 insert/delete/update/select语句 还是 调用存储过程,基本的功能 就是 增删改查。又分为两大类: (1)、查询(会返回结果集的),(2)、非查询(不会返回结果集的,只会返回生效的记录的条数)。

注意(1): 双方 传送字符串的时候,约定好 使用哪种字符集(ansi/utf8/gdk/...),窄/宽/变长 字符集...

注意(2): 约定-->字符串 都使用 2个'\0' 最为结尾。

ZC: unicode 算不算一种字符集?还是 一类字符集的统称?

1、

客户端

(1)、int32(信息总长)

(2)、int32(信息的Idx)

(3)、int32(语句类型,insert/delete/update/select/存储过程)

(4)、字符串(sql语句)

2、

服务端

(1)、int32(信息总长)

(2)、int32(信息的Idx)

(3)、int32([客户端请求的]语句类型,insert/delete/update/select/存储过程)

2.1、没有结果集

(4)、int32(生效的记录的条数)

2.2、有结果集

(4)、int32(返回的结果集中列的数量)

(5)、int32(返回的结果集中行的数量,即返回了几条记录)

(6)、[所有的 列名的信息]

  (6.1)、int32(第?列的 列名信息的长度)

  (6.2)、[第?列的 列名信息]

    (6.2.1)、int32(指明该列的数据类型,int/float/字符串/...)

    (6.2.2)、字符串(列名)

(7)、[结果集中 第?条 记录的信息]

  (7.1)、int32(该条记录中 第?列的 数据的长度)

  (7.2)、byte数组(该条记录中 第?列的 数据。根据 6.1和7.1 判断数据的类型和值)

3、待考虑问题

  3.1、客户端 发送批量sql语句

    3.1.1、批量的 增/删/改 语句 ==> 这个比较好处理 同(2.1)的处理方式一样就行

    3.1.2、批量的 查 语句 ==> 这个貌似没法弄吧?是要弄一个临时表的效果,然后返回一个最终的结果集?? --> 不知道实际情况下,会不会有这种需求?

    3.1.3、批量的 增/删/改/查 混在一起 ---> 不知道实际情况下,会不会有这种需求?

3.2、

4、

解析返回的 结果集

伪代码:

Txxx

{

  byte[] msg; // 存放 服务端传回来的 查询的 所有信息

  int iColumnNum; // 结果集中 共有几列

  int iRowNum; // 结果集中 共有几条记录

  List<String> listColumn; // 存放 结果集 里面的所有列的列名

  List<int> listColumnType; // 所有的列的数据类型

  int[][] offset; // 第i行第j列的信息 在 msg中的偏移,也就是 指向(7.1)

  // ... 用于 得到 第i行第j列的信息 的各种 函数

  bool GetValueInt_byRowCol(int _iRow, _iCol, int* _piOut)

  {

    // 函数 成功 则返回 true,失败 则返回 false

    // 若 _iRow行 _iCol列 的数据是 int型,则 *_piOut 存放 *((int*)(&msg[offset[_iRow][_iCol]])),函数返回 true;否则函数返回false

  }

  bool GetValuePtr_byRowCol(int _iRow, _iCol, char** _ppcOut)

  {

    // 函数 成功 则返回 true,失败 则返回 false

    // 若 _iRow行 _iCol列 的数据是 字符串类型,则 *_ppcOut 存放 (char*)(&msg[offset[_iRow][_iCol]]),函数返回 true;否则函数返回false

  }

}

5、

TCP中间件_个人方案的更多相关文章

  1. 权限模块_整体方案说明_设计实体&映射实体_实现初始化权限数据的功能

    权限模块_整体方案说明 要点说明 权限就是控制功能的使用(功能对应着URL). 对功能的控制就是对URL的访问控制. 在我们的程序中,一个功能对应一个或两个URL: 1,例如列表或删除功能,只对应一个 ...

  2. NIO 服务端TCP连接管理的方案

    最近做的一个项目需要在服务端对连接端进行管理,故将方案记录于此. 方案实现的结果与背景 因为服务端与客户端实现的是长连接,所以需要对客户端的连接情况进行监控,防止无效连接占用资源. 完成类似于心跳的接 ...

  3. TCP_DB_中间件_数据打包格式

    ZC: 这里约定的是,C和S之间 传输的TCP数据包的格式 1.TCP数据包 打包格式 1.1.TCP包长度(int32) + TCP包序号(int32) + TCP包类型(int32) + TCP包 ...

  4. TCP_DB_中间件_遗留问题

    1.一些经验 1.1.Delphi客户端中 Block的socket,使用 读取超时的话,会有大约1秒的时间等待...很影响使用体验...于是 放弃超时读取的方式,改为 在每次读取到TCP数据包时 都 ...

  5. java_tomcat_the_APR based Apache Tomcat 小喵咪死活启动报错_临时方案

    报错信息如下: 信息: The APR based Apache Tomcat Native library which allows optimal performance in productio ...

  6. MySQL高可用方案

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...

  7. [硬件项目] 2、汽车倒车雷达设计——基于专用倒车雷达芯片GM3101的设计方案与采用CX20106A红外线检测芯片方案对比

    前言 尽管每辆汽车都有后视镜,但不可避免地都存在一个后视镜的盲区,倒车雷达则可一定程度帮助驾驶员扫除视野死角和视线模糊的缺陷,提高驾驶安全性.上一节已经分析清倒车雷达的语音模块(上一节),本节将深入分 ...

  8. TCP/IP协议原理与应用笔记17:IP编址(重点)

    1. IP地址(通用标识符) 对于同一个网络设备(主机或路由器)的不同网络连接,需要不同的IP地址进行标识 2. 主机标识符 主要有下面三种方式的主机标识方式: (1)Name:是什么,可读性强(了解 ...

  9. 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为

    初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...

随机推荐

  1. net.mvc中并发限制

    浏览器限制 会话限制 线程限制 这篇文章讲的很详细: https://weblogs.asp.net/imranbaloch/concurrent-requests-in-asp-net-mvc 明白 ...

  2. 第三课作业——set类型、sorted set类型的增删改查,redis的事务

    第三课时作业 静哥 by 2016.2.23~2016.3.6   [作业描述] 1.总结什么是set以及什么是sorted set,并完成对set以及sorted set的增删改查(查需要至少4种方 ...

  3. 第二课——解析mysqldump命令和mysqlbinlog命令+innodb和Myisam存储引擎简介

    环境说明 mysql版本:Percona-Server-5.6.30 IP:10.7.15.167 端口:3306 安装目录:/httx/run/mysql 数据目录:/httx/run/mysql/ ...

  4. Oracle Schema Objects——Tables——Overview of Tables

    Oracle Schema Objects Overview of Tables A table is the basic unit of data organization in an Oracle ...

  5. Share and NTFS Permission

    NTFS Permissions Share Permissions Share and NTFS Permission Similarities 共享权限和NTFS权限的相似性 Modifying ...

  6. 安装Vmware ESX Server5.5 ——hardware virtualization is not a feature of the cpu or is not enabled in the BIOS

    Error信息: hardware virtualization is not a feature of the cpu or is not enabled in the BIOS 解决方案: F2进 ...

  7. FatMouse's Speed---hdu1160(简单dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 题意就是给你一些老鼠(编号1,2,3,4,5,6,7,8...)的体重和他们的速度然后求出最大的 ...

  8. Linux bridge 资料链接

    1.Performance Evalution of Linux Bridge https://tnt.aufbix.org/_media/linux/yu-linux-tsm2004.pdf 2.L ...

  9. tensorflow 中 name_scope 及 variable_scope 的异同

    Let's begin by a short introduction to variable sharing. It is a mechanism in TensorFlow that allows ...

  10. NoSQL选型及HBase案例详解(转)

    从 NOSQL的类型到 常用的产品,我们已经做过很多关于NoSQL的文章,今天我们从国内著名的互联网公司及科研机构的实战谈一下NoSQL数据库. NoSQL一定程度上是基于一个很重要的原理—— CAP ...