0

0

mysql 协议的ResultsetRow包及解析

黄舟

黄舟

发布时间:2017-03-07 13:19:59

|

1955人浏览过

|

来源于php中文网

原创

git

https://github.com/sea-boat/mysql-protocol

概况

ResultsetRow包属于服务端返回ResultSet时的其中一部分包,用于描述结果集的行记录。

mysql通信报文结构

类型 名字 描述
int payload长度 按照the least significant byte first存储,3个字节的payload和1个字节的序列号组合成报文头
int 序列号
string payload 报文体,长度即为前面指定的payload长度

ResultsetRow包

Payload

eSiteGroup站群管理系统1.0.4
eSiteGroup站群管理系统1.0.4

eSiteGroup站群管理系统是基于eFramework低代码开发平台构建,是一款高度灵活、可扩展的智能化站群管理解决方案,全面支持SQL Server、SQLite、MySQL、Oracle等主流数据库,适配企业级高并发、轻量级本地化、云端分布式等多种部署场景。通过可视化建模与模块化设计,系统可实现多站点的快速搭建、跨平台协同管理及数据智能分析,满足政府、企业、教育机构等组织对多站点统一管控的

下载
if(NULL){  0xfb}else{
  Protocol::LengthEncodedString}

更多详情 : http://dev.mysql.com/doc/internals/en/com-query-response.html#text-resultset

ResultsetRow包类

/**
 * 
 * 
resultset row packet.
 * @author   * 
seaboat
 * 
email: 849586227@qq.com
 * 
blog: http://www.php.cn/;/pre>
 * @version 1.0
 * @see http://www.php.cn/
 */public class ResultsetRowPacket extends MySQLPacket {
    private static final byte NULL_MARK = (byte) 251;    
    public int columnCount;    
    public List columnValues;    
    public ResultsetRowPacket() {

    }    
    public ResultsetRowPacket(int columnCount) {        
    this.columnCount = columnCount;
    }    
    @Override
    public void read(byte[] data) {
        MySQLMessage mm = new MySQLMessage(data);
        packetLength = mm.readUB3();
        packetId = mm.read();        
        for (int i = 0; i < columnCount; i++) {
            columnValues.add(mm.readBytesWithLength());
        }
    }    @Override
    public void write(ByteBuffer buffer) {
        BufferUtil.writeUB3(buffer, calcPacketSize());
        buffer.put(packetId);        
        for (int i = 0; i < columnCount; i++) {            
        byte[] fv = columnValues.get(i);            
        if (fv == null) {
                buffer.put(NULL_MARK);
            } else {
                BufferUtil.writeLength(buffer, fv.length);
                buffer.put(fv);
            }
        }
    }    @Override
    public int calcPacketSize() {        
    int size = 0;        
    for (int i = 0; i < columnCount; i++) {            
    byte[] v = columnValues.get(i);
            size += (v == null || v.length == 0) ? 1 : BufferUtil.getLength(v);
        }        return size;
    }    @Override
    protected String getPacketInfo() {        
    return "MySQL Resultset Row Packet";
    }

}

 以上就是mysql 协议的ResultsetRow包及解析的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.8万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 793人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号