首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

C++ 對接 MySQL 完整指南:API 呼叫、常見坑與 64 位編譯解決方案

     編輯:MySQL 資料庫相關知識

採用官方 C API 直連,免 ODBC 依賴

專案需求從 SQL Server 遷移至 MySQL,為減少外部依賴,選用 MySQL 官方 C API(libmysql.dll + libmysql.lib)直接連接。

Visual Studio 專案配置要點

  1. 包含目錄:加入 MySQL 安裝目錄下的 include(如 C:\MySQL\MySQL Server 5.1\include)。
  2. 庫文件:將 libmysql.dll、libmysql.lib 複製至專案目錄。
  3. 頭文件引用:
    #include <winsock.h>
    #include <mysql.h>
    #pragma comment(lib, "libmySQL.lib")

核心操作封裝範例

1. 連接資料庫

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;
}

2. 執行 DDL / DML

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;
}

3. 關閉連接

mysql_close(&m_sqlCon);

常用 API 快查表(節選)

函數用途
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取得自增主鍵值

踩坑實錄:VS2015 預設 32 位 vs MySQL 64 位庫

錯誤:無法解析的外部符號。原因:專案平台為 x86,但引用的是 64 位 libmysql.lib。
解決:專案屬性 → 配置管理器 → 將作用平台改為 x64,或改用 32 位庫文件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved