码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++项目——集群聊天服务器项目(六)MySQL模块


    Hello,大家好啊,最近比较忙,没来得及更新项目,实在抱歉~今天就恢复更新拉~

    在验证完网络模块与业务模块代码可以正常使用后,需完成的操作是与底层数据库进行交互,为实现各类用户查询、增删业务奠定良好的基础。本节内容主要完成与底层数据库的交互操作,一起来看看把~

    项目流程如下:

    1、项目环境搭建 C++项目——集群聊天服务器项目(一)项目介绍、环境搭建、Boost库安装、Muduo库安装、Linux与vscode配置_c++集群聊天服务器-CSDN博客

    2、Json第三方库介绍

    C++项目——集群聊天服务器项目(二)Json第三方库-CSDN博客

    3、muduo网络库介绍

    C++项目——集群聊天服务器项目(三)muduo网络库-CSDN博客

    4、MySQL数据库创建

    C++项目——集群聊天服务器项目(四)MySQL数据库-CSDN博客

    5、网络模块与业务模块代码编写

    C++项目——集群聊天服务器项目(五)网络模块与业务模块-CSDN博客

    一、Mysql环境

    在第一节中环境搭建中,有提示大家安装MySQL开发包,可以使用命令

    sudo find /usr -name libmysqlclient*

    去查看MySQL开发包是否安装好,查询结果如下:

    各位这里十分重要哈,这牵扯到后续项目是否能正常登录查询操作底层数据库中存储的数据。

    二、MySQL模块编写

    2.1 编写MySQL类

    在include/server目录下创建文件夹db,表示database数据库,db文件夹下创建头文件db.hpp,负责连接、操作数据库的基本操作

    dp.hpp头文件如下:

    1. #ifndef DB_H
    2. #define DB_H
    3. #include //mysql的头文件
    4. #include
    5. using namespace std;
    6. //数据库操作类
    7. class MySQL
    8. {
    9. public:
    10. //初始化数据库连接
    11. MySQL();
    12. //释放数据库连接资源
    13. ~MySQL();
    14. //连接数据库
    15. bool connect();
    16. //更新操作
    17. bool update(string sql);
    18. //查询操作
    19. MYSQL_RES *query(string sql);
    20. //获取连接
    21. MYSQL* getConnection();
    22. private:
    23. MYSQL *_conn;//连接
    24. };
    25. #endif

    相应的,在src/server/中创建文件夹db,db文件夹下创建库文件db.cpp,如图

    对创建的MySQL类进行函数实现,db.cpp文件如下:

    1. #include "db.hpp"
    2. #include
    3. //数据库配置信息
    4. static string server = "127.0.0.1";
    5. static string user = "root";
    6. static string password = "123456";
    7. static string dbname = "chat";
    8. //初始化数据库连接
    9. MySQL::MySQL()
    10. {
    11. _conn = mysql_init(nullptr);
    12. }
    13. //释放数据库连接资源
    14. MySQL::~MySQL()
    15. {
    16. if (_conn != nullptr)
    17. mysql_close(_conn);
    18. }
    19. //连接数据库
    20. bool MySQL::connect()
    21. {
    22. MYSQL *p = mysql_real_connect(_conn, server.c_str(), user.c_str(),
    23. password.c_str(), dbname.c_str(), 3306, nullptr, 0);
    24. if (p != nullptr)
    25. {
    26. //C和C++代码默认的编码字符是ASCII,如果不设置,从MySQL上拉下来的中文显示?
    27. mysql_query(_conn, "set names gbk");
    28. LOG_INFO << "connect mysql success!";
    29. }
    30. else
    31. {
    32. LOG_INFO << "connect mysql fail!";
    33. }
    34. return p;
    35. }
    36. //更新操作
    37. bool MySQL::update(string sql)
    38. {
    39. if (mysql_query(_conn, sql.c_str()))
    40. {
    41. LOG_INFO << __FILE__ << ":" << __LINE__ << ":"
    42. << sql << "更新失败!";
    43. return false;
    44. }
    45. return true;
    46. }
    47. //查询操作
    48. MYSQL_RES *MySQL::query(string sql)
    49. {
    50. if (mysql_query(_conn, sql.c_str()))
    51. {
    52. LOG_INFO << __FILE__ << ":" << __LINE__ << ":"
    53. << sql << "查询失败!";
    54. return nullptr;
    55. }
    56. return mysql_use_result(_conn);
    57. }
    58. //获取连接
    59. MYSQL* MySQL::getConnection()
    60. {
    61. return _conn;
    62. }

    2.2 更新CMakeLists.txt文件

    我们来依次更新一下CMakeLists.txt文件

    在chat项目下的CMakeLists.txt文件,将头文件搜索路径更新

    在src/server中的CMakeLists.txt添加mysqlclient库文件,添加db目录中所有文件一起生成可执行文件

    三、模块测试

    此处只要使用CMake编译成功即可!

    如果有问题,还请及时联系我,感谢大家的批评与指正!谢谢~

  • 相关阅读:
    【Linux-Windows】通过浏览器批量下载图像数据
    软件设计模式
    使用MySQL Workbench进行数据库创建
    队列--环形数组实现
    分享一下微信小程序的文章中怎么添加营销活动
    评论式软文怎么写?学会这三招,让你轻松营造出客观的感觉
    【Linux系列】 离线安装vnc 可视化桌面
    弦截法及Python实现
    vue3-数据模拟json -server
    B端系统从0到1:有几步,其中需求分析要做啥?
  • 原文地址:https://blog.csdn.net/mingyuexin235/article/details/137149503
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号