C++搭建集群聊天室(九):數(shù)據(jù)庫代碼及用戶模型代碼封裝
數(shù)據(jù)庫模塊
db.hpp
首先,在 include/server 目錄下新增文件夾 db,用于存放數(shù)據(jù)庫相關(guān)文件。
在 db 文件夾下新增文件:db.hpp
#ifndef DB_H_ #define DB_H_ #include
接下來,實(shí)現(xiàn)這些函數(shù)
db.cpp
同樣,在 src/server 目錄下新建 db 文件夾,用于存放數(shù)據(jù)庫文件。
新建 db.cpp
#include "db.hpp" MySQL::MySQL() { _conn = mysql_init(nullptr); } // 釋放數(shù)據(jù)庫連接資源 MySQL::~MySQL() { if (_conn != nullptr) mysql_close(_conn); } // 連接數(shù)據(jù)庫 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) { mysql_query(_conn, "set names gbk"); } 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; }
用戶通用模塊
user.hpp
封裝數(shù)據(jù)。并提供數(shù)據(jù)的訪問。
#ifndef USER_H_ #define USER_H_ #include
東西不多,直接寫這里。
usermodel.hpp
如果說,上面那個(gè)文件是 ==從數(shù)據(jù)庫到用戶層的映射==,那么這組文件就是 ==業(yè)務(wù)層對(duì)用戶業(yè)務(wù)的操作==
#ifndef USERMODEL_H_ #define USERMODEL_H_ #include "user.hpp" //User表的操作類 class UserModel{ public: bool insert(User &user); User query(int id); bool updateState(User user); private: }; #endif
usermodel.cpp
#include "usermodel.hpp" #include "db.hpp" #include
cmake 文件修改
最外層的 cmake 文件需要適當(dāng)?shù)淖龀稣{(diào)整。
加上下面這條
include_directories(${PROJECT_SOURCE_DIR}/include/server/db)
server 里面的 cmake 也要適當(dāng)?shù)淖稣{(diào)整:
# 定義一個(gè)SRC_LIST變量,存放該目錄下所有的源文件 aux_source_directory(. SRC_LIST) aux_source_directory(./db SRC_LIST) # 指定生成可執(zhí)行文件 add_executable(ChatServer ${SRC_LIST}) # 指定可執(zhí)行文件生成時(shí)需要鏈接的外部庫 target_link_libraries(ChatServer muduo_net muduo_base pthread mysqlclient)
加一個(gè)源文件的路徑,加一個(gè)外庫。
編譯遇到問題請(qǐng)直接轉(zhuǎn)文檔 問題解決 專欄,這次的問題很難找到適配的資料,需要靠經(jīng)驗(yàn)嘿嘿。
C++ 數(shù)據(jù)庫
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。