首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

C++ 連接 MySQL 實戰:API 呼叫與常見問題排查

     編輯:MySQL 綜合教學

C++ 連接 MySQL 實戰:API 呼叫與常見問題排查

專案需求從 SQL Server 轉向 MySQL,採用 MySQL 官方 C API 直接連接,避免額外安裝 ODBC 驅動。開發環境:Visual Studio 2010/2015,MySQL 5.1/5.6/5.7。

1. 環境配置

  • VC++ 目錄 → 包含目錄加入:MySQL安裝目錄\include (如 C:\Program Files\MySQL\MySQL Server 5.1\include)
  • 將 libmysql.dll 與 libmysql.lib 複製至專案目錄
  • 標頭檔引用:
#include <winsock.h>
#include <mysql.h>
#pragma comment(lib, "libmySQL.lib")

2. 核心程式碼實作

2.1 連接資料庫

// 標頭檔宣告
MYSQL m_sqlCon;

// 連接函式
bool ConnectMySQL() {
    try {
        mysql_init(&m_sqlCon);
        // 參數:連接結構、主機、用戶、密碼、資料庫、埠、Unix socket、客戶端旗標
        if (!mysql_real_connect(&m_sqlCon, "localhost", "root", "root", "test", 3306, NULL, 0)) {
            AfxMessageBox(_T("資料庫連接失敗!"));
            return FALSE;
        }
        return TRUE;
    } catch (...) {
        return FALSE;
    }
}

2.2 關閉連接

mysql_close(&m_sqlCon);

2.3 建立資料表

char* pQuery = "CREATE TABLE IF NOT EXISTS DS_Building( ID VARCHAR(10), Name VARCHAR(255), Descs VARCHAR(255), PRIMARY KEY (ID) )";
if (mysql_real_query(&m_sqlCon, pQuery, (UINT)strlen(pQuery)) != 0) {
    const char* pErr = mysql_error(&m_sqlCon);
    return FALSE;
}

3. MySQL C API 常用函式速查表 (節錄)

函式用途
mysql_affected_rows()返回最近 UPDATE/DELETE/INSERT 影響的行數
mysql_close()關閉伺服器連接
mysql_real_connect()連接 MySQL 伺服器 (推薦)
mysql_real_query()執行帶長度的 SQL 查詢
mysql_store_result()檢索完整結果集至客戶端
mysql_fetch_row()從結果集取得下一行
mysql_free_result()釋放結果集記憶體
mysql_errno() / mysql_error()取得最近錯誤碼/訊息
mysql_insert_id()取得 AUTO_INCREMENT 生成的 ID

(完整 50 個 API 列表請參考官方文檔)

4. 實戰踩坑記錄:VS2015 連接 64 位元 MySQL 失敗

現象:連結器報錯 無法解析的外部符號,檢查庫路徑、依賴項均正確。

原因:VS 預設編譯目標為 x86 (32 位元),但 MySQL 庫為 64 位元版本。

解決:專案屬性 → 配置管理器 → 作用平台改為 x64;或下載 32 位元的 libmysql.lib/dll 替換。

掌握 C API 直連方式,能讓 C++ 應用輕量級整合 MySQL,避免 ODBC 層級的額外依賴與配置複雜度。

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