佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > C++連接使用MySQL的方法

C++連接使用MySQL的方法

熱門標(biāo)簽:呼叫中心市場需求 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 百度競價(jià)排名 鐵路電話系統(tǒng) 服務(wù)外包 AI電銷 Linux服務(wù)器

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, vectorvectorstring>> 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, vectorvectorstring>> 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ù)
 vectorstring> 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;";
 vectorvectorstring>> 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)容

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • C++連接mysql數(shù)據(jù)庫的兩種方法小結(jié)
  • Eclipse中C++連接mysql數(shù)據(jù)庫
  • C++使用MySQL-Connector/C++連接MySQL出現(xiàn)LNK2019錯(cuò)誤的解決方法
  • C/C++ 連接MySql數(shù)據(jù)庫的方法
  • C++連接mysql的方法(直接調(diào)用C-API)
  • C++利用MySQL API連接和操作數(shù)據(jù)庫實(shí)例詳解
  • c++連接mysql5.6的出錯(cuò)問題總結(jié)
  • C++與mysql連接遇到的問題匯總
  • C++用mysql自帶的頭文件連接數(shù)據(jù)庫
  • c++連接mysql數(shù)據(jù)庫的兩種方法(ADO連接和mysql api連接)

標(biāo)簽:衡水 崇左 銅川 湖南 蘭州 湘潭 仙桃 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《C++連接使用MySQL的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    宁安市| 武夷山市| 六枝特区| 孙吴县| 新民市| 天峻县| 长垣县| 怀柔区| 隆安县| 威宁| 汾西县| 诏安县| 泉州市| 钟山县| 会宁县| 瑞金市| 南阳市| 乐陵市| 罗平县| 上林县| 咸丰县| 阿尔山市| 桐庐县| 罗定市| 桓台县| 天台县| 镇巴县| 大英县| 鹤壁市| 泰来县| 大石桥市| 红桥区| 兴业县| 阳城县| 江油市| 浦城县| 壤塘县| 河北省| 财经| 博乐市| 固原市|