vs2019鏈接mysql 網上說的,太麻煩,我研究了以后.覺得就是動態庫和幾個mysql文件的事兒,於是心生一計,直接copy下來,試一試
具體操作如下
1 新建工程
2 mysql安裝好了之后,有include和lib文件,cpoy到新建的工程下
3 程序運行時候,需要dll動態庫lib庫,和頭文件,全部添加到項目中 右擊->添加->現有項(shift+alt+a) 把include和lib文件全部添加進來,結果差不多如下
4 引入頭文件和lib文件 (注意,運行得是x64平台,不然跑不動,至於為啥,,,再議)
#include "include\mysql.h"
#pragma comment(lib,"./lib/libmysql.lib")
5 運行需要dll,但是不知道在文件內引入lib為啥不起作用,最為保險的辦法是直接將dll文件cpoy到exe文件下 如下
5.2 如果不想每次都copy,可以將這個動態庫,copy到 C:\Windows\System32\
6 完整測試代碼
#define _CRT_SECURE_NO_WARNINGS #include <WinSock.h> //一定要包含這個,或者winsock2.h #include "include\mysql.h" //引入mysql頭文件(一種方式是在vc目錄里面設置,一種是文件夾拷到工程目錄,然后這樣包含) #include <Windows.h> #include <iostream> #include <string> #include<iomanip> using namespace std; //包含附加依賴項,也可以在工程--屬性里面設置 #pragma comment(lib,"wsock32.lib") #pragma comment(lib,"./lib/libmysql.lib") #pragma comment(lib,"ws2_32.lib") int main() { MYSQL mysql; //一個數據庫結構體 MYSQL_RES* res; //一個結果集結構體 MYSQL_ROW row; //char** 二維數組,存放一條條記錄 char strsql[2048]; //初始化數據庫 mysql_init(&mysql); //設置編碼方式 mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"); //連接數據庫 //判斷如果連接失敗就把連接失敗的信息顯示出來,我們好進行對應修改。 // mysql_real_connect參數:2.本地地址 3.你的mysql用戶名 4.你的mysql密碼 5.數據庫名字 6.端口號 if (mysql_real_connect(&mysql, "localhost", "root", "pwd", "db1", 3306, NULL, 0) == NULL) { cout << (mysql_error(&mysql)); } //查詢數據 mysql_query(&mysql, "SELECT * from equipment"); //獲取結果集 res = mysql_store_result(&mysql); //顯示數據 //給ROW賦值,判斷ROW是否為空,不為空就打印數據。 while (row = mysql_fetch_row(res)) { printf("%s ", row[0]);//打印ID printf("%s ", row[1]);//打印ID string deviceid = row[1]; deviceid.erase(3, 2); string id(row[0]); cout << deviceid << endl; sprintf(strsql, "update equipment set equipId='%s' where id=%s", deviceid.c_str(), id.c_str()); // 也可以控制台手動輸入sql語句 cout << strsql << endl; //if (mysql_query(&mysql, strsql)) // 執行SQL語句 //{ // cout << "error:" << mysql_error(&mysql) << endl; // return false; //} //else //{ // cout << "success..." << endl; //} cout << endl; } //釋放結果集 mysql_free_result(res); //關閉數據庫 mysql_close(&mysql); //停留等待 getchar(); return 0; }
//