ubuntu下mysql數(shù)據(jù)庫(kù)的安裝
ubuntu安裝mysql(圖文詳解)-CSDN博客https://blog.csdn.net/qq_58158950/article/details/135667062?spm=1001.2014.3001.5501
項(xiàng)目目錄結(jié)構(gòu)
數(shù)據(jù)庫(kù)及表結(jié)構(gòu)
public.h
//打印錯(cuò)誤信息?
#ifndef PUBLIC_h
#define PUBLIC_H
#include<iostream>
using namespace std;
// 打印源文件的文件名、所造行號(hào)和時(shí)間戳
#define LOG(str)\
cout<<__FILE__<<":"<<__LINE__<<" "<<\
__TIMESTAMP__<<" : "<<str<<endl;
#endif
這段代碼是一個(gè)宏定義,它定義了一個(gè)名為 LOG
的宏。
__FILE__
?是一個(gè)預(yù)定義宏,它會(huì)在編譯時(shí)被替換為當(dāng)前源文件的文件名(包括路徑)。__LINE__
?也是一個(gè)預(yù)定義宏,它會(huì)在編譯時(shí)被替換為當(dāng)前代碼所在的行號(hào)。__TIMESTAMP__
?是一個(gè)非標(biāo)準(zhǔn)的宏,在許多編譯器中并不支持。它被替換為編譯時(shí)的時(shí)間戳。
該宏的作用是在輸出日志時(shí)打印出當(dāng)前源文件的文件名、所在行號(hào)和時(shí)間戳,以及傳入的日志內(nèi)容。
MySqlConn.hpp?
//與mysql進(jìn)行交互的類,包括mysql的連接已經(jīng)操作
#ifndef MYSQLCONN_H
#define MYSQLCONN_H
#include<string>
#include "mysql/mysql.h"
class MySqlConn
{
public:
//初始化數(shù)據(jù)庫(kù)連接
MySqlConn();
//釋放數(shù)據(jù)庫(kù)連接
~MySqlConn();
//連接數(shù)據(jù)庫(kù)
bool connection(string ip,unsigned short port,string user,string passwd,string dbname);
// bool connection();
//更新操作,insert,delete,update
bool update(string sql);
//查詢操作
MYSQL_RES* query(string sql);
private:
MYSQL *_conn;
};
#endif
這段代碼實(shí)現(xiàn)了一個(gè) MySQL 數(shù)據(jù)庫(kù)連接的封裝類 MySqlConn
,該類提供了以下功能:
- 初始化和釋放數(shù)據(jù)庫(kù)連接。
- 連接數(shù)據(jù)庫(kù)。
- 執(zhí)行更新操作(insert, delete, update)。
- 執(zhí)行查詢操作(select)并返回結(jié)果集。
MySqlConn.cpp?
#include "public.h"
#include "MySqlConn.hpp"
//初始化數(shù)據(jù)庫(kù)連接
MySqlConn::MySqlConn()
{
//初始化數(shù)據(jù)庫(kù)連接
_conn=mysql_init(nullptr);
}
//釋放數(shù)據(jù)庫(kù)連接
MySqlConn::~MySqlConn()
{
if(_conn!=nullptr)
{
mysql_close(_conn);
}
}
//連接數(shù)據(jù)庫(kù)
// bool MySqlConn::connection()
bool MySqlConn::connection(string ip,unsigned short port,string user,string passwd,string dbname)
{
MYSQL* p=mysql_real_connect(
_conn,//數(shù)據(jù)庫(kù)連接
//mysql數(shù)據(jù)庫(kù)內(nèi)部使用c風(fēng)格的字符串,需要使用c_str()函數(shù)將string類型字符串進(jìn)行轉(zhuǎn)換
ip.c_str(),//ip地址
user.c_str(),//用戶名
passwd.c_str(),//密碼
dbname.c_str(),//數(shù)據(jù)庫(kù)名稱
port,//mysql端口號(hào)
nullptr,0
);
if(p)
{
mysql_query(_conn,"SET NAME UTF8");
// mysql_options(_conn, MYSQL_SET_CHARSET_NAME, "gb2312");
}
LOG("數(shù)據(jù)庫(kù)連接成功!");
return p;
}
//更新操作
bool MySqlConn::update(string sql)
{
//insert,delete,update
if(mysql_query(_conn,sql.c_str()))
{
LOG("更新失敗:"+sql);
const char* errorMsg = mysql_error(_conn);
LOG("錯(cuò)誤信息:" + string(errorMsg));
return false;
}
return true;
}
//查詢操作,select
MYSQL_RES* MySqlConn::query(string sql)
{
if(mysql_query(_conn,sql.c_str()))
{
LOG("查詢失?。?+sql);
LOG("錯(cuò)誤信息:" + string(mysql_error(_conn)));
return nullptr;
}
return mysql_use_result(_conn);
}
sprintf()
函數(shù)是 C 語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的一個(gè)格式化輸出函數(shù),它的原型如下:
int sprintf(char *str, const char *format, ...);
sprintf()
函數(shù)的作用是將格式化的字符串輸出到指定的字符數(shù)組str
中。它的參數(shù)與printf()
函數(shù)類似,第二個(gè)參數(shù)format
是格式化字符串,后面的可變參數(shù)則是要輸出的數(shù)據(jù)。
sprintf()
返回輸出的字符數(shù),如果出錯(cuò),則返回一個(gè)負(fù)數(shù)。
sprintf()
函數(shù)可以用于將格式化的數(shù)據(jù)轉(zhuǎn)換為字符串,然后將字符串輸出到一個(gè)緩沖區(qū)中。
main.cpp
#include<iostream>
#include"public.h"
#include"MySqlConn.hpp"
using namespace std;
int main()
{
// LOG("this is log msg!!!");
string ip = "127.0.0.1";
string user = "root";
string passwd = "123456";
string dbname = "chat";
MySqlConn conn;//創(chuàng)建mysql對(duì)象
//定義sql語(yǔ)句
char sql[1024]={0};
sprintf(sql,
"insert into user(name,age,sex) values('%s',%d,'%s')",
"jack",20,"male");
//連接數(shù)據(jù)庫(kù)
conn.connection(ip,3306,user,passwd,dbname);
//執(zhí)行sql
conn.update(sql);
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(mysql)
# 編譯配置選項(xiàng)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)
# 配置可執(zhí)行文件的生成路徑
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
aux_source_directory(. SRC_LIST)
add_executable(mysqltest ${SRC_LIST})
target_link_libraries(mysqltest mysqlclient)
進(jìn)入build文件夾中編譯
cmake ..
make
進(jìn)入bin目錄下執(zhí)行
?查看結(jié)果文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-811531.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-811531.html
到了這里,關(guān)于c++ mysql數(shù)據(jù)庫(kù)編程(linux系統(tǒng))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!