1. 程式人生 > 其它 >C++ MYSQL連線及操作

C++ MYSQL連線及操作

技術標籤:C++mysql

C++ 連線MYSQL及執行SQL語句


前言

編譯環境為VS2015 + MYSQL5.7(或者以上)


一、下載MYSQL

這裡注意安裝的是MYSQL-Community-Server-Version,去MYSQL官網下載即可,現在最新的應該是8.0.23,我之前用的都是5.7的,不過不影響,連結如下:https://dev.mysql.com/downloads/windows/installer/8.0.html.

二、安裝VS2015

安裝教程有很多,這裡不再贅述,可參考這篇部落格

https://www.cnblogs.com/mabingxue/p/10826395.html
如果沒有其它開發需求的話,在選擇安裝選項時 只需安裝win sdk 以及C/C++即可。

三、MYSQL操作

1.配置環境

下載並安裝MYSQL後,網上通用的C++連線MYSQL共有兩種方式,這裡採用的是官方的API函式,即“mysql.h”
將MYSQL安裝目錄下的include和lib目錄分別新增進vs2015的包含和依賴目錄中,然後將lib下的libmysql.dll和libmysql.lib拷貝到專案目錄…/x64/Debug/下,最後在程式碼中加入以下程式碼

#pragma comment(lib, “libmysql.lib”)

進行動態連結,這裡注意下,架構必須為x64,不然無法使用libmysql.dll。目錄配置及最終程式碼配置如下:
MYSQL配置

程式碼如下:

#include <mysql.h>

using namespace std;

#pragma comment(lib,"libmySQL.lib")

2.連線MYSQL

程式碼如下:

//嘗試建立mysql連線
	try
	{
		mysql_init(mysql);
		// localhost:伺服器 root為賬號 123456為密碼 test為資料庫名 3306為埠  
		if (!mysql_real_connect(mysql,
"localhost", "root", "123456", "test", 3306, NULL, 0)) { cout << "connect mysql failed" << endl; return 0; } } catch (...) { return 0; } cout << "連線資料庫成功" << endl;

"root"為安裝MYSQL時設定的使用者名稱,“123456”為安裝MYSQL時設定的密碼,“test”為所要連線的資料庫名,這三處可自行更改。

3.MYSQL操作

查詢程式碼如下:

MYSQL_RES *res;				//這個結構代表返回行的一個查詢結果集  
string sqlStr;				//執行的sql語句
string sqlStr = "select * from ScenarioNMEA where ScenarioName = '" + scenarioName + "'";
if (mysql_query(mysql, sqlStr.data()))
{
	cout << "select failed" << endl;
	return 0;
}
else
{
	res = mysql_store_result(mysql);	//query只是執行了sql語句,需要手動儲存結果集,而後才能輸出查詢到的結果,如行數等,與JAVA的JDBC不同
	if (mysql_affected_rows(mysql) == 1)	//判斷行數
	{
		
	}
	else {

	}
}

插入程式碼如下:

MYSQL_RES *res;				//這個結構代表返回行的一個查詢結果集  
string sqlStr;				//執行的sql語句
sqlStr = "insert into ScenarioNMEA(ScenarioName, RecordFlag) values('" + scenarioName + "',1)";
if (mysql_query(mysql, sqlStr.data()))
{
	cout << "sql handle failed" << endl;
}
else
{
	res = mysql_store_result(mysql);
	if (mysql_affected_rows(mysql) == 1)
	{
		cout << "insert success" << endl;
	}
}

需要注意的是,"mysql_query"僅是執行了sql語句,而結果並沒有直接返回,與JDBC不同,需要通過“mysql_store_result”手動儲存結果集,或者通過“mysql_affected_rows”查詢受影響行數。 這裡僅展示了查詢以及插入的程式碼,刪除以及修改同理,修改sql語句即可。

總結

以上就是全部的內容,本文僅僅簡單介紹了C++連線MYSQL的相關應用。