專案需求從 SQL Server 遷移至 MySQL,為減少外部依賴,選用 MySQL 官方 C API(libmysql.dll + libmysql.lib)直接連接。
include(如 C:\MySQL\MySQL Server 5.1\include)。libmysql.dll、libmysql.lib 複製至專案目錄。#include <winsock.h> #include <mysql.h> #pragma comment(lib, "libmySQL.lib")
MYSQL m_sqlCon;
bool ConnectDB() {
mysql_init(&m_sqlCon);
if (!mysql_real_connect(&m_sqlCon, "localhost", "root", "root", "test", 3306, NULL, 0)) {
AfxMessageBox(_T("資料庫連接失敗!"));
return false;
}
return true;
}
bool ExecuteSQL(const char* sql) {
if (mysql_real_query(&m_sqlCon, sql, (unsigned int)strlen(sql)) != 0) {
const char* err = mysql_error(&m_sqlCon);
return false;
}
return true;
}
mysql_close(&m_sqlCon);
| 函數 | 用途 |
|---|---|
| mysql_real_connect | 建立連接(推薦) |
| mysql_real_query | 執行帶長度的 SQL |
| mysql_store_result | 一次性取回完整結果集 |
| mysql_fetch_row | 逐行讀取結果 |
| mysql_free_result | 釋放結果集記憶體 |
| mysql_errno / mysql_error | 取得最近錯誤碼/訊息 |
| mysql_affected_rows | 影響行數(INSERT/UPDATE/DELETE) |
| mysql_insert_id | 取得自增主鍵值 |
錯誤:無法解析的外部符號。原因:專案平台為 x86,但引用的是 64 位 libmysql.lib。
解決:專案屬性 → 配置管理器 → 將作用平台改為 x64,或改用 32 位庫文件。