我们在上一节中把网络模块和业务模块的代码通过事件回调完全地拆分开。
现在我们需要把业务模块的和数据层的代码区分开。

(不在业务模块出现数据库的增删改查,增加中间的一层类)

我们需要libmysqlclient.so,对外的API方法,连接mysqlserver,进行增删改查。

我们在include下的server下创建一个文件夹:db
然后完善项目工程目录上的CMakeLists.txt

然后我们完善src下的server下的CMakeLists.txt

我们在include下的server下的db下,创建头文件:db.hpp

#ifndef DB_H
#define DB_H#include <mysql/mysql.h>//mysql的头文件
#include <string>
using namespace std;//数据库操作类
class MySQL
{public://初始化数据库连接MySQL();//释放数据库连接资源~MySQL();//连接数据库bool connect();//更新操作bool update(string sql);//查询操作MYSQL_RES *query(string sql);//获取连接MYSQL* getConnection();
private:MYSQL *_conn;//连接
};#endif

我们在src下的server下创建文件夹:db
我们在src下的server下的db下创建文件:db.cpp

#include "db.hpp"
#include <muduo/base/Logging.h>//数据库配置信息
static string server = "127.0.0.1";
static string user = "root";
static string password = "123456";
static string dbname = "chat";//初始化数据库连接
MySQL::MySQL()
{_conn = mysql_init(nullptr);
}//释放数据库连接资源
MySQL::~MySQL()
{if (_conn != nullptr)mysql_close(_conn);
}//连接数据库
bool MySQL::connect()
{MYSQL *p = mysql_real_connect(_conn, server.c_str(), user.c_str(),password.c_str(), dbname.c_str(), 3306, nullptr, 0);if (p != nullptr){//C和C++代码默认的编码字符是ASCII,如果不设置,从MySQL上拉下来的中文显示?mysql_query(_conn, "set names gbk");LOG_INFO << "connect mysql success!";}else{LOG_INFO << "connect mysql fail!";}return p;
}//更新操作
bool MySQL::update(string sql)
{if (mysql_query(_conn, sql.c_str())){LOG_INFO << __FILE__ << ":" << __LINE__ << ":"<< sql << "更新失败!";return false;}return true;
}//查询操作
MYSQL_RES *MySQL::query(string sql)
{if (mysql_query(_conn, sql.c_str())){LOG_INFO << __FILE__ << ":" << __LINE__ << ":"<< sql << "查询失败!";return nullptr;}return mysql_use_result(_conn);
}//获取连接
MYSQL* MySQL::getConnection()
{return _conn;
}

我们完善src下的server的CMakeLists.txt

保存,编译成功

389-MySQL数据库代码封装相关推荐

  1. Python 操作MySql数据库(封装、优雅)

    Python 记录操作MySql数据库(封装)--优雅 学了pymysql第三方库(pip install pymysql)来操作MySql数据库后,浅记一下对MySql进行 <关于我的MySq ...

  2. php代码连接mysql数据库,php连接mysql数据库代码

    php连接mysql数据库代码 复制代码 代码如下: mysql_connect("localhost", "root","1981427" ...

  3. php 管理 mysql 数据库 代码_安装并使用phpMyAdmin管理MySQL数据库_php

    学会使用基于web数据库的管理工具phpMyAdmin. 如果使用合适的工具,mysql数据库的管理就会为得相当简单.应用MySQL命令行方式需要对MySQL知识非常熟悉,对SQL语言也是同样的道理. ...

  4. 封装连接mysql数据库_封装连接mysql数据库

    封装连接mysql数据库 云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Servi ...

  5. Java web 服务器连接MySQL数据库代码

    文章目录 前言 一,建立工程 二,导入jar包 三,编写DataBase类实现连接数据库与操作数据库 四,效果图 参考文章 前言 经过前面的环境部署,今天我们终于可以来连接数据库了.参考我之前的文章. ...

  6. python封装类连接mysql数据_python操作mysql数据库基本类封装

    # -*- coding: UTF-8 -*- import MySQLdb as mdb class MysqldbHelper(object): """操作mysql ...

  7. mysql数据库代码_【代码总结】MYSQL数据库的常见操作

    ============================== MYSQL数据库的常见操作 ============================== 一.mysql的连接与关闭 -h:指定所连接的服 ...

  8. php如何操作mysql数据库代码_php如何操作mysql数据库的类(附代码)

    这篇文章主要介绍了php简单操作mysql数据库的类,涉及php操作mysql的连接.查询.插入.删除等基本操作方法,非常具有实用价值,需要的朋友可以参考下.<?php /** * Databa ...

  9. wpf c 登录注册 mysql代码代码_Wpf+数据库代码封装+策略模式封装

    运行界面: 数据库保存的题: 数据库封装代码: using System; using System.Collections.Generic; using System.Linq; using Sys ...

  10. jsp连接mysql数据库代码_JSP连接MySQL数据库代码

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. Class.forName("org.gjt.mm.mysql.Driver&q ...

最新文章

  1. 小蠢笔记:从继承特性来看构造函数
  2. 100页精华PPT,帮你彻底看懂5G!
  3. 笔记·mybatis核心对象和全局配置文件
  4. 数据结构与算法之插入排序
  5. 最新突破!科学家研发出世界首款精神控制手臂机器人;近日Kubernetes 1.15 正式发布;雷军公布小米手机产品线布局……...
  6. oracle脚本导入mysql数据库_oracle脚本导入mysql数据库
  7. python 内置数据类型之数字
  8. day12-html(css)
  9. GitHub简单教程
  10. CSS 居中 可随着浏览器变大变小而居中
  11. java top tree 数据结构_Java中如何实现Tree的数据结构算法
  12. 安卓java模拟器4.4_android 4.4.4源码下载_编译_nexus5刷机_内核编译_驱动helloworld_framework修改...
  13. 矩形窗、汉明窗、汉宁窗的频率响应图
  14. 程序猿---北京骑行天津~~~~
  15. (第九章)UI--PS 基础 通道抠图
  16. 当你爸妈吐槽你的微信头像时,你该如何反击?
  17. 星域cdn概念股票_星域CDN获市场认可 获得牌照并扩大经营
  18. SSL连接是什么意思
  19. 金格控件java版本_金格控件宝典(问题大全.docx
  20. 互联网日报 | 1月19日 星期二 | 腾讯音乐全资收购懒人听书;字节跳动整合硬件业务专注教育硬件;PSA与FCA正式完成合并...

热门文章

  1. node安装与环境搭建 + VUE项目搭建
  2. DOM中的node(节点)有关的三个属性--nodeType、nodeName、nodeValue
  3. 五年引用量最高的 10 大论文:Adam 登顶,AlphaGo、Transfromer 上榜
  4. 【C语言学习笔记】SWAP函数详解
  5. 学C语言中输入输出函数,一篇就够了
  6. 华师计算机在线作业答案,2016春季华师计算机基础在线作业答案
  7. 华师在线计算机考试登陆不上,华师在线首页登录网址
  8. 疫情过后,35岁老程序员年后第一天上班被公司劝退,该何去何从?
  9. 【排序】快排(霍尔快排)
  10. 如何解决scala读取本地文件失败