高性能服务器系列-第二章 Mysql C++ 封装

高性能服务器系列-第二章 Mysql C++ 封装

前言

MySQL 是一个开放源码的小型关联式数据库管理系统,由于其体积小、速度快、总体拥有成本低,高性能、可靠性和可扩展性等特点,被广泛地应用。为简化MySQL的使用,采用C++对mysql常用功能进行封装。

一、封装接口定义

在这里插入图片描述

二、接口调用示例

  • 修改数据库用户名、密码、数据库名
    在这里插入图片描述
  • 获取数据库实例
MysqlBase * g_MysqlBaseInstance;
g_MysqlBaseInstance = MysqlBase::GetInstance(0);//获取第一个数据库实例,可根据需要定义多个实例
  • 创建数据库表
#define Create_VedioDataTable "create table if not exists VedioDataTable(Id char(18) primary key not null,VedioSize INT,VedioData MediumBlob);"
pMysqlBaseInstance->mysql_noResult_query(Create_VedioDataTable);
  • 多行多列数据查询
map<int, vector<string>> results;
pMysqlBaseInstance->mysql_select_query(Select_BookInfo, results);
  • 单行数据查询
#define Select_OneBookInfo "SELECT * from BookInfo where isbn = '%s' limit 1;"
vector<string> results;
char slqbuf[1024];     //存放查询 sql 语句字符串
sprintf(slqbuf, Select_OneBookInfo, isbn.c_str());
pMysqlBaseInstance->mysql_select_SingleLine_query(slqbuf,  results);
  • 单列查询
#define Select_ISNBFromBookInfo "SELECT isbn from BookInfo;"
    vector<string> results;
pMysqlBaseInstance->mysql_select_SingleRow_query(Select_ISNBFromBookInfo, results);
  • 大数据(视频、图片、二进制等)输入数据库,以MP4视频文件为例
InsertBLOB(g_MysqlBaseInstance, "ID_001", "/xxfw/MysqlEncap/BigBuckBunny.mp4");
  • 大数据查询
QureyBLOB(g_MysqlBaseInstance, "ID_001"); //查询数据存储为本地MP4,使用时根据具体需求适配

三、用户集成

  • 解压MysqlEncap.zip后可得到如下目录:
    在这里插入图片描述
  • 拷贝Mysql文件夹至用户工程,添加源文件编译目录:
    在这里插入图片描述
  • ,获取数据库实例,调用示例:
g_MysqlBaseInstance = MysqlBase::GetInstance(0);
cout << "\n--------------------------无返回值查询---------------------------------------------" << endl;
CreateBookInfoTable(g_MysqlBaseInstance);
CreateVedioDataTable(g_MysqlBaseInstance);

AddBook(g_MysqlBaseInstance, "9787115434159","Clean Code","Professional competence of programmers");
AddBook(g_MysqlBaseInstance, "9787521723038", "Huawei Interview Record", "A dictionary of Huaweis historical stories");
AddBook(g_MysqlBaseInstance, "9787508353937", "Design Pattern", "A study guide that values the brain");

cout << "\n--------------------------多行多列查询---------------------------------------------" << endl;
GetBookInfo(g_MysqlBaseInstance);

cout << "\n---------------------------单行查询------------------------------------------------" << endl;
GetOneBookInfo(g_MysqlBaseInstance, "9787115434159");

cout << "\n---------------------------单列查询-----------------------------------------------" << endl;
GetBookIsbn(g_MysqlBaseInstance);

cout << "\n---------------------------大数据入库,插入mp4视频数据----------------------------" << endl;
InsertBLOB(g_MysqlBaseInstance, "ID_001", "/xxfw/MysqlEncap/BigBuckBunny.mp4");

cout << "\n---------------------------大数据查询,查询视频数据写入MP4文件--------------------" << endl;
QureyBLOB(g_MysqlBaseInstance, "ID_001");

四、示例工程编译及运行

  • 编译环境
    LSB Version: :core-4.1-amd64:core-4.1-noarch
    Distributor ID: CentOS
    Description: CentOS Linux release 8.5.2111
    gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)
    g++ (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)
    cmake version 3.20.2
  • 编译
    将文件上传至linxu系统,以”/xxfw/MysqlEncap/”目录为例
    cd /xxfw/MysqlEncap/
    ls
    make
    在这里插入图片描述
    编译完成后在工程目录下生成MysqlEncap.out:
    在这里插入图片描述
  • 运行
    执行./MysqlEncap.out启动服务:
    在这里插入图片描述

五、资源下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值