zoukankan      html  css  js  c++  java
  • TCP中间件_个人方案

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

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

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

    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、

  • 相关阅读:
    bzoj3514 Codechef MARCH14 GERALD07加强版
    差分数列(学习笔记)
    mysql 数据库 replace、regexp的用法
    30岁前男人需要完成的事
    硬盘故障修复十大攻略
    网络工程师考试必备知识
    系统不能正常关机
    忘记XP登入密码的9种解决办法
    Mysql全文搜索match...against的用法
    双绞线网线的连接方式
  • 原文地址:https://www.cnblogs.com/javaskill/p/5370271.html
Copyright © 2011-2022 走看看