操作系統:win7/64
編譯軟件:VS2010
數據庫:5.7.11
從C語言連接mysql數據庫包含兩個步驟:
1 初始化連接句柄結構
2 實際創建連接
測試代碼1:
#include "stdafx.h" #include <WinSock2.h> /*socket通信,系統頭文件*/ #include <windows.h> #include <stdio.h> #include "mysql.h" #pragma comment(lib, "libmysql.lib") int main() { MYSQL *conn; char *server = "localhost"; char *user = "root"; char *password = "root";//“******”為你設置的密碼 char *database = "hyx"; conn = mysql_init(NULL); if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) printf("連接失敗:%s", mysql_error(conn)); else printf("連接成功!"); getchar(); return 0; }
測試結果1:
遇到的問題:
error LNK2019: 無法解析的外部符號 _mysql_real_connect@32,該符號在函數 _main 中被引用
error LNK2019: 無法解析的外部符號 _mysql_query@8,該符號在函數 _main 中被引用
error LNK2019: 無法解析的外部符號 _mysql_init@4,該符號在函數 _main 中被引用
error LNK2019: 無法解析的外部符號 _mysql_close@4,該符號在函數 _main 中被引用
解決方法:
原因如下,我使用的系統是win7x64,MySQL 64位的lib也是64位的接口。所以解決方法如下:
.項目->屬性->配置管理器
活動解決方案平台,下拉選新建,出現一個新的對號框,在鍵入選擇新平台中選擇X64
重新編譯 成功~~~
測試代碼2:
#include "stdafx.h" #include <WinSock2.h> /*socket通信,系統頭文件*/ #include <windows.h> #include <stdio.h> #include "mysql.h" #pragma comment(lib, "libmysql.lib") int main() { MYSQL my_connection; char *server = "localhost"; char *user = "root"; char *password = "root";//“******”為你設置的密碼 char *database = "hyx"; mysql_init(&my_connection); if(!mysql_real_connect(&my_connection, server, user, password, database, 0, NULL, 0)) printf("連接失敗:%sn", mysql_error(&my_connection)); else printf("連接成功!"); getchar(); return 0; }
測試結果2:
問題:測試代碼1與測試代碼2只有標黑的兩行不同,但是一個連接成功了,一個連接失敗了,這是什么原因?
F12 | 轉到定義處 |
ctrl+"-" | 從定義處返回 |
F7 | 編譯 |
ctrl+F5 | 運行 |
F5 | 執行到下一個斷點 |
F10 | 調試(逐過程) |
F11 | 調試(逐語句) |