課程做業要用c++鏈接mysql server,可是出現些小問題,經查閱資料已經解決,作一下筆記。mysql
環境:vs2017, mysql版本是8.0.16-winx64。ios
項目 - 配置屬性 - 連接器 - 常規 - 附加庫目錄, 添加C:\mysql\mysql-8.0.16-winx64\lib。 也是要換成本身的目錄。c++
項目 - 配置屬性 - 連接器 - 輸入 - 附加依賴項 添加libmysql.lib.sql
其實就是將頭文件和庫文件包含進來。數據庫
1 //下面的代碼是一個實現C++鏈接MYSQL數據庫的很好的例子 2 3 #include <winsock.h> 4 #include <iostream> 5 #include <string> 6 #include <mysql.h> 7 using namespace std; 8 9 #pragma comment(lib, "ws2_32.lib") 10 #pragma comment(lib, "libmysql.lib") 11 //單步執行,不想單步執行就註釋掉 12 #define STEPBYSTEP 13 14 int main() { 15 cout << "****************************************" << endl; 16 17 #ifdef STEPBYSTEP 18 system("pause"); 19 #endif 20 21 //必備的一個數據結構 22 MYSQL mydata; 23 24 //初始化數據庫 25 if (0 == mysql_library_init(0, NULL, NULL)) { 26 cout << "mysql_library_init() succeed" << endl; 27 } 28 else { 29 cout << "mysql_library_init() failed" << endl; 30 return -1; 31 } 32 33 #ifdef STEPBYSTEP 34 system("pause"); 35 #endif 36 37 //初始化數據結構 38 if (NULL != mysql_init(&mydata)) { 39 cout << "mysql_init() succeed" << endl; 40 } 41 else { 42 cout << "mysql_init() failed" << endl; 43 return -1; 44 } 45 46 47 48 #ifdef STEPBYSTEP 49 system("pause"); 50 #endif 51 52 //在鏈接數據庫以前,設置額外的鏈接選項 53 //能夠設置的選項不少,這裏設置字符集,不然沒法處理中文 54 if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) { 55 cout << "mysql_options() succeed" << endl; 56 } 57 else { 58 cout << "mysql_options() failed" << endl; 59 return -1; 60 } 61 62 #ifdef STEPBYSTEP 63 system("pause"); 64 #endif 65 66 //鏈接數據庫 67 if (NULL != mysql_real_connect(&mydata, "localhost", "root", "123456", "mysql",3306, NULL, 0)) //這裏的地址,用戶名,密碼,端口能夠根據本身本地的狀況更改 68 { 69 cout << "mysql_real_connect() succeed" << endl; 70 } 71 else { 72 cout << "mysql_real_connect() failed" << endl; 73 return -1; 74 } 75 76 return 0; 77 }
若是能運行,OK!後面的不用看了。數據結構
方法一:因爲VS創建的項目默認爲WIN32 項目,需將平臺改成64。設置以下:測試
(1) 項目—》屬性—》配置屬性—》配置管理器—》活動解決方案平臺,下拉選新建,出現一個新的對號框,在鍵入選擇新平臺中選擇X64,以下圖所示:spa
(2)不是將C:\mysql\mysql-8.0.16-winx64\lib(安裝MySql下的lib文件夾)中的libmysql.dll拷到項目下的Debug文件夾中,而是拷到項目下x64\Debug中(或者C:\Windows\System32中)。重啓(必需的)。完畢。。 .net
沒有第二步會提示缺乏「libmysql.dll」。3d
參考連接:
1. c++鏈接mysql並提示「沒法解析的外部符號 _mysql_server_init@12」解決方法
2. VS中MFC鏈接MySQL因爲系統不一樣位(32/64)引發的錯誤:沒法解析的外部符號 _mysql_init@四、_mysql_query
3. 測試代碼