C++連接使用MySQL的方法
C++連接使用MySQL,供大家參考,具體內(nèi)容如下
定義MySQLCon類
class MySQLCon
{
MYSQL mysql;
public:
int errornum;
string errortext;
public:
//初始化
MySQLCon();
//關(guān)閉數(shù)據(jù)庫
~MySQLCon();
//鏈接數(shù)據(jù)庫
bool OpenConn(const char* host,const char* username,const char* pwd,const char* dbName,unsigned port=0);
void GetErrorText();//獲取錯(cuò)誤文本
void Close();//關(guān)閉數(shù)據(jù)庫
bool ExecuteSQL(const char* sql);//使用SQL語句,無法接收數(shù)據(jù)
bool QureySQL(const char* sql, vector<vector<string>>& resultSet);//使用SQL語句并接收數(shù)據(jù)(select語句)
};
初始化操作
MySQLCon::MySQLCon()
{
if (mysql_library_init(0, nullptr, nullptr))
{
cout << "CAPI初始化失敗" << std::endl;
getchar();
exit(1);
}
if (mysql_init(&mysql)==nullptr)
{
cout << "初始化數(shù)據(jù)庫變量失敗" << std::endl;
getchar();
exit(1);
}
if (mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"))
{
cout << "設(shè)置連接選項(xiàng)失敗" << std::endl;
getchar();
exit(1);
}
}
連接到MySQL服務(wù)器
//參數(shù)分別為主機(jī),用戶名,密碼,數(shù)據(jù)庫名,端口號(hào)
bool MySQLCon::OpenConn(const char* host, const char* username, const char* pwd, const char* dbName, unsigned port)
{
//連接數(shù)據(jù)庫
if (mysql_real_connect(&mysql, host, username, pwd, dbName, port, nullptr, 0)==nullptr)
{
cout << "連接到MySQL服務(wù)器失敗" << std::endl;
//獲取錯(cuò)誤文本
GetErrorText();
exit(1);
return false;
}
return true;
}
獲取MySQL錯(cuò)誤信息
void MySQLCon::GetErrorText()
{
//獲取錯(cuò)誤代碼
errornum = mysql_errno(&mysql);
//獲取錯(cuò)誤文本
errortext = mysql_error(&mysql);
//打印錯(cuò)誤代碼
cout << "error num: " << errornum << std::endl;
//打印錯(cuò)誤文本
cout << "error text: " << errortext << std::endl;
getchar();
}
C++中使用SQL語句
bool MySQLCon::ExecuteSQL(const char* sql)
{
//使用SQL語句但無法接收數(shù)據(jù)
if (mysql_real_query(&mysql, sql, strlen(sql)))
{
GetErrorText();
return false;
}
return true;
}
bool MySQLCon::QureySQL(const char* sql, vector<vector<string>>& resultSet)
{
//使用SQL語句并接收數(shù)據(jù)至vector容器
if (mysql_real_query(&mysql, sql, strlen(sql)))
{
GetErrorText();
return false;
}
//創(chuàng)建一個(gè)MYSQL結(jié)果集
MYSQL_RES* result = mysql_store_result(&mysql);
//獲取行和列的總數(shù)
unsigned int rows = mysql_num_rows(result);
unsigned int cols = mysql_num_fields(result);
//用于記錄結(jié)果集中的一條數(shù)據(jù)
MYSQL_ROW row;
while (row = mysql_fetch_row(result))
{
//創(chuàng)建一個(gè)vector容器用于儲(chǔ)存row中的數(shù)據(jù)
vector<string> lineDate;
for (int i = 0; i < cols; i++)
{
if (row[i])
{
//將row中每一列的數(shù)據(jù)存入lineDate中
lineDate.push_back(row[i]);
}
else
{
lineDate.push_back("");
}
}
//在resultSet中存入整行數(shù)據(jù)
resultSet.push_back(lineDate);
}
//釋放結(jié)果集
mysql_free_result(result);
return true;
}
關(guān)閉數(shù)據(jù)庫
void MySQLCon::Close()
{
mysql_close(&mysql);
}
MySQLCon::~MySQLCon()
{
Close();
mysql_library_end();
}
示例主函數(shù)
int main()
{
MySQLCon c_apiconn;
c_apiconn.OpenConn("127.0.0.1", "root", "136119", "fancy");
string sql = "use fancy;";
vector<vector<string>> data;
c_apiconn.ExecuteSQL(sql.c_str());
sql = "select * from fancy.info;";
c_apiconn.QureySQL(sql.c_str(), data);
for (int i = 0; i < data.size(); i++)
{
for (int j = 0; j < data[i].size(); j++)
{
cout << data[i][j] << "\t";
}
cout << endl;
}
return 0;
}
輸出內(nèi)容

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C/C++連接MySQL并發(fā)送SQL請(qǐng)求的實(shí)戰(zhàn)指南
- 使用C++實(shí)現(xiàn)MySQL數(shù)據(jù)庫連接池
- C/C++連接MySQL數(shù)據(jù)庫詳細(xì)圖文教程
- C++連接mysql數(shù)據(jù)庫(改進(jìn)版)
- C++連接mysql數(shù)據(jù)庫并讀取數(shù)據(jù)的具體步驟
- c++連接mysql入門案例
- C++連接并使用MySQL數(shù)據(jù)庫
- C++連接mysql數(shù)據(jù)庫的兩種方法小結(jié)
- C/C++ 連接MySql數(shù)據(jù)庫的方法
- C++連接mysql的方法(直接調(diào)用C-API)
- 使用C/C++來連接 MySQL的使用
相關(guān)文章
Mysql大表全表查詢的全過程(分析底層的數(shù)據(jù)流轉(zhuǎn)過程)
這篇文章主要介紹了Mysql大表全表查詢的全過程(分析底層的數(shù)據(jù)流轉(zhuǎn)過程),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼
本篇文章是對(duì)MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
MySQL timestamp與時(shí)區(qū)問題的解決
本文主要介紹了MySQL timestamp與時(shí)區(qū)問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
PHP學(xué)習(xí)散記 2012_01_07(MySQL)
數(shù)據(jù)庫是Web大多數(shù)應(yīng)用開發(fā)的基礎(chǔ)。如果你是用PHP,那么大多數(shù)據(jù)庫用的是MYSQL也是LAMP架構(gòu)的重要部分2012-01-01
mysql left join的基本用法以及on與where的區(qū)別
我們?cè)趯憇ql語句的時(shí)候,總是無法避免使用到連接關(guān)鍵詞,比如內(nèi)連接、外連接,下面就是詳細(xì)的介紹,需要的朋友可以參考下2023-05-05

