基于MySQL Protocol实现自己的数据库驱动

前言

很多时候我们并不清楚程序是如何和数据库进行交互的,比如简单的查询命令,程序是如何从MySQL中获取的呢?

在这个博客的系列里,我基于了MySQL网络协议,利用Wireshark解析MySQL的packe,实现了自己的数据库驱动。在实现功能,借鉴了 sea-boat的packet实现,在其基础上进行功能块的编写,如查询功能可以看下面列子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.jiagu.mysql.CURD;

/**
* Created by jintx on 2018/11/1.
*/
public class QueryTest {

public static void main(String args[]) throws Exception{
Query query = new Query();
String host = "192.168.43.97";//数据库ip地址
int port = 3306;//端口号
String user = "root";//用户名
String password = "tdlab401";//密码
String dataBase = "data";//操作的数据库名
String sqlStr = "SELECT name,author FROM `paper` limit 0,2;";//查询语句
query.query(host,port,user,password,dataBase,sqlStr);//输出结果
}

}

结果:

一种基于混沌的敏感数据加密算法,司德成,

水下无线电能传输和信号接口系统设计和分析,周世鹏,

实现自己的数据库驱动——MySQL网络协议(一)

实现自己的数据库驱动——WireShark分析MySQL网络协议中的数据包(二)

实现自己的数据库驱动——MySQL协议Handshake解析(三)

实现自己的数据库驱动——MySQL协议Auth Packet解析(四)

实现自己的数据库驱动——MySQL协议OK/Error包解析(五)

实现自己的数据库驱动——MySQL协议Result Set包解析(六)

实现自己的数据库驱动——MySQL协议Quit包解析(七)

实现自己的数据库驱动——字节位运算细节(八)

实现自己的数据库驱动——Packet的read(九)

实现自己的数据库驱动——Packet的write(十)