c++使用mysql的api串連相關問題,mysqlapi
記錄一下自己使用中的相關問題,方便有同樣問題的同學解決。
- 關於在VS中的各種配置,看這裡,不過需要注意一下,我現在用的mysql版本是5.6的,已經沒有【MySQL Server \lib\opt】這個路徑了,將這一項設定到【MySQL Server \lib】即可
- 如果出現如下錯誤:
1>main.obj : error LNK2019: 無法解析的外部符號 _mysql_server_init@12,該符號在函數 _main 中被引用1>main.obj : error LNK2019: 無法解析的外部符號 _mysql_init@4,該符號在函數 _main 中被引用1>main.obj : error LNK2019: 無法解析的外部符號 _mysql_real_connect@32,該符號在函數 _main 中被引用1>main.obj : error LNK2019: 無法解析的外部符號 _mysql_options@12,該符號在函數 _main 中被引用
因為按照第一步來的時候,建立的是win32項目,而現在系統、mysql使用的就均是x64的,改成x64即可,操作步驟如下:
.項目->屬性->組態管理員
活動解決方案平台,下拉選建立,出現一個新的對號框,在鍵入選擇新平台中選擇X64
學習自這裡
- 之後可以寫一個簡單的c程式測試一下是否成功
#include "winsock.h" #include "iostream" #include "mysql.h" #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "libmysql.lib") using namespace std; void main() { MYSQL mydata; mysql_library_init(0,NULL,NULL);//初始化MySQL C API庫 mysql_init(&mydata);//初始化mydata的資料結構,mydata是MYSQL對象 mysql_options(&mydata,MYSQL_SET_CHARSET_NAME,"gbk");//串連選項:添加GBK字元集支援 //串連函數 if(mysql_real_connect(&mydata,"localhost","root","1234","demo", 3306, 0, 0) != NULL) cout<<"database connection OK!"<<endl; }
這裡注意一下,mysql_real_connect函數中的幾個參數(&mydata,"localhost","root","1234","demo", 3306, 0, 0),一般就需要改2,3,4,5幾個參數即可,分別為資料庫位置,使用者名稱,密碼,待串連的資料庫名稱
- 如果代碼中出現#include "stdafx.h"報錯:ERROR,無法開啟源檔案...,參見這裡
主要是由於這個標頭檔屬於先行編譯標頭檔,如果在建立項目時候沒有告訴VS相關資訊,當然不認識這是什麼東西了。
- #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL
參見這裡
- c++ fatal error C1083: 無法開啟先行編譯標頭檔:“.\Debug\router.pch”
參見這裡,這個問題也屬於先行編譯標頭檔問題