日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

基于Linux的C++轻量级web服务器/webserver/httpserver——MySQL数据库的使用

發(fā)布時(shí)間:2023/12/31 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Linux的C++轻量级web服务器/webserver/httpserver——MySQL数据库的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MySQL數(shù)據(jù)庫(kù)的使用

常見(jiàn)的服務(wù)器設(shè)計(jì),其結(jié)構(gòu)組成一般都是:I/O處理模塊、業(yè)務(wù)邏輯模塊、數(shù)據(jù)模塊。

我的另一個(gè)項(xiàng)目:chatserver聊天服務(wù)器其設(shè)計(jì)模式也是這樣:使用Muduo處理網(wǎng)絡(luò)I/O,編寫(xiě)業(yè)務(wù)模塊代碼、數(shù)據(jù)代碼和業(yè)務(wù)代碼要能夠?qū)崿F(xiàn)分離。

這個(gè)項(xiàng)目開(kāi)發(fā)的http服務(wù)器支持用戶的【登陸】和【注冊(cè)】業(yè)務(wù)。為了保存用戶的登陸名稱和密碼,采用MySQL數(shù)據(jù)庫(kù)進(jìn)行落地存儲(chǔ)。

MySQL使用介紹

這部分大家自行學(xué)習(xí)吧。簡(jiǎn)單的使用掌握就行,對(duì)數(shù)據(jù)庫(kù)的增刪改查命令要熟悉。書(shū)籍這邊推薦《MySQL必知必會(huì)》,幾天就能學(xué)會(huì)MySQL的基礎(chǔ)使用
看書(shū)的同時(shí),還可以配合牛客網(wǎng)的刷題網(wǎng)站,通過(guò)刷題加深記憶

環(huán)境配置

為了讓這個(gè)項(xiàng)目成功編譯,你需要提前配置好mysql的庫(kù)。
本項(xiàng)目需要安裝mysql-server以及對(duì)應(yīng)的開(kāi)發(fā)包。ubuntu環(huán)境安裝mysql-server和mysql開(kāi)發(fā)包,包括mysql頭文件和動(dòng)態(tài)庫(kù)文件,命令如下:

sudo apt-get install mysql-server =》 安裝最新版MySQL服務(wù)器 sudo apt-get install libmysqlclient-dev =》 安裝開(kāi)發(fā)包

安裝完成后需要設(shè)置MySQL的登錄用戶和密碼,按下面步驟修改mysql的root用戶密碼為123456:

【step 1】tony@tony-virtual-machine:~$ sudo cat /etc/mysql/debian.cnf [client] host = localhost user = debian-sys-maint 《============== 初始的用戶名 password = Kk3TbShbFNvjvhpM 《=============== 初始的密碼 socket = /var/run/mysqld/mysqld.sock 【step 2】用上面初始的用戶名和密碼,登錄mysql server,修改root用戶的密碼,命令如下: tony@tony-virtual-machine:~$ mysql -u debian-sys-maint -pKk3TbShbFNvjvhpM 命令解釋: -u后面是上面查看的用戶名 -p后面緊跟上面查看的密碼 mysql> update mysql.user set authentication_string=password('123456') where user='root' and host='localhost'; mysql> update mysql.user set plugin="mysql_native_password"; mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye

如果用戶名和密碼無(wú)法修改成功,也可以在CSDN上找到對(duì)應(yīng)的解決方法

為了能夠正確運(yùn)行項(xiàng)目中的代碼,還需導(dǎo)入項(xiàng)目要用到的表
導(dǎo)入文件在:thirdparty/httpserver.sql
導(dǎo)入的方法請(qǐng)自行查詢,也是很簡(jiǎn)單的

設(shè)計(jì)方法

對(duì)于網(wǎng)頁(yè)上用戶的登陸和注冊(cè)業(yè)務(wù),從項(xiàng)目業(yè)務(wù)邏輯上分析的話,這個(gè)服務(wù)器需要以下的功能支持:

  • 支持POST請(qǐng)求。用戶名和密碼會(huì)通過(guò)POST請(qǐng)求被傳輸?shù)椒?wù)器上。所以,httpconnect模塊要能夠解析出POST請(qǐng)求中攜帶的用戶名和密碼
  • 解析得到的用戶名和密碼在MySQL數(shù)據(jù)庫(kù)中進(jìn)行查驗(yàn)。賬號(hào)密碼正確,服務(wù)器回報(bào)登陸成功頁(yè)面;如果錯(cuò)誤也需要告知客戶端。登陸和注冊(cè)業(yè)務(wù)在服務(wù)器端很好區(qū)別,通過(guò)解析URL地址能夠獲知客戶端是在登陸頁(yè)面,還是在注冊(cè)頁(yè)面發(fā)送過(guò)來(lái)的POST請(qǐng)求

MySQL的開(kāi)發(fā)方式

與MySQL數(shù)據(jù)庫(kù)相關(guān)的代碼文件總共有三個(gè):
include/db/database.h
include/db/user.h
include/model/usermodel.h

database.h

這個(gè)頭文件的作用是操作數(shù)據(jù)庫(kù)的,負(fù)責(zé)完成對(duì)數(shù)據(jù)庫(kù)的連接、更新、查詢操作。

連接的數(shù)據(jù)庫(kù)名稱、主機(jī)名等信息,我預(yù)先定義在了文件起始位置。如果你的數(shù)據(jù)庫(kù)設(shè)置和我的不一樣的話,請(qǐng)按照你的配置進(jìn)行修改

// 數(shù)據(jù)庫(kù)配置信息 static std::string server = "127.0.0.1"; static std::string user = "root"; static std::string password = "123456"; static std::string dbname = "webserver";

user.h

user類是一個(gè)ORM類。ORM全稱Object Relational Mapping,即對(duì)象關(guān)系映射。這個(gè)類是將我們數(shù)據(jù)庫(kù)中的user表的信息映射到類中。對(duì)于數(shù)據(jù)的操作,我們無(wú)需再去編寫(xiě)原生sql,取代代之的是基于面向?qū)ο蟮乃枷肴ゾ帉?xiě)類、對(duì)象、調(diào)用相應(yīng)的方法等,ORM會(huì)將其轉(zhuǎn)換/映射成原生SQL然后交給database.h中的MYSQL類去執(zhí)行。

usermodel.h

這個(gè)類才算是真正在數(shù)據(jù)庫(kù)中查詢user表的一個(gè)類的。

定義了兩個(gè)方法:

// 在數(shù)據(jù)庫(kù)中新增一個(gè)用戶信息 bool insert(User &usr); // 在數(shù)據(jù)庫(kù)中查找用戶信息 User query(std::string &name);

insert方法會(huì)往user表中插入一個(gè)新的用戶信息(賬號(hào)名稱和密碼)。這個(gè)方法是針對(duì)注冊(cè)業(yè)務(wù)使用的

query方法在user表中查詢用戶名為name的信息,返回值是一個(gè)User對(duì)象。如果沒(méi)有找到用戶名,該User對(duì)象的成員信息都是空值。

實(shí)戰(zhàn)使用

具體代碼使用,請(qǐng)查看:src/httprequest.cpp:_getPost()

總結(jié)

以上是生活随笔為你收集整理的基于Linux的C++轻量级web服务器/webserver/httpserver——MySQL数据库的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。