杂网网站建设,广州最新政策,crm财务系统,成品短视频app下载有哪些按照功能分类#xff0c;不管是直接的 insert/delete/update/select语句 还是 调用存储过程#xff0c;基本的功能 就是 增删改查。又分为两大类: (1)、查询(会返回结果集的)#xff0c;(2)、非查询(不会返回结果集的#xff0c;只会返回生效的记录的条数)。 注意(1): 双方…按照功能分类不管是直接的 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; // 结果集中 共有几条记录 ListString listColumn; // 存放 结果集 里面的所有列的列名 Listint 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、 转载于:https://www.cnblogs.com/javaskill/p/5370271.html