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

C++ 直連 MySQL 實戰:API 調用、VS 配置與 64 位坑點避雷

     編輯:MySQL 綜合教學

基於 MySQL C API 的 C++ 連接開發全記錄

拒絕 ODBC 額外依賴,直接使用官方 libmysql 庫,輕量、可控、性能最優。

Visual Studio 2010+ 專案配置

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

核心封裝類設計


class MySQLConn {
    MYSQL m_sqlCon;
public:
    bool Connect(const char* host, const char* user, const char* pwd, const char* db, unsigned int port) {
        mysql_init(&m_sqlCon);
        if (!mysql_real_connect(&m_sqlCon, host, user, pwd, db, port, NULL, 0)) {
            AfxMessageBox(_T("數據庫連接失敗!"));
            return false;
        }
        return true;
    }
    void Close() { mysql_close(&m_sqlCon); }
    
    bool Execute(const char* sql) {
        return mysql_real_query(&m_sqlCon, sql, (unsigned int)strlen(sql)) == 0;
    }
    
    const char* GetError() { return mysql_error(&m_sqlCon); }
};

常用操作範例


// 建表
char* sql = "CREATE TABLE IF NOT EXISTS DS_Building (ID VARCHAR(10) PRIMARY KEY, Name VARCHAR(255), Descs VARCHAR(255))";
conn.Execute(sql);

// 查詢結果集處理
if (conn.Execute("SELECT * FROM users")) {
    MYSQL_RES* res = mysql_store_result(&conn.m_sqlCon);
    if (res) {
        int fields = mysql_num_fields(res);
        MYSQL_ROW row;
        while ((row = mysql_fetch_row(res))) {
            // 處理 row[0]...row[fields-1]
        }
        mysql_free_result(res);
    }
}

MySQL C API 快速查閱表

分類核心函數說明
連接管理mysql_init()初始化 MYSQL 結構
mysql_real_connect()建立真實連接(推薦)
mysql_close()關閉連接
查詢執行mysql_query()執行 SQL 字符串
mysql_real_query()執行帶長度的 SQL(含二進制)
mysql_store_result()獲取完整結果集
mysql_use_result()流式獲取結果集
結果處理mysql_fetch_row()取下一行
mysql_num_rows()結果集行數
mysql_free_result()釋放結果集內存
錯誤信息mysql_errno()錯誤碼
mysql_error()錯誤信息
mysql_affected_rows()影響行數

致命坑點:VS 默認 32 位 vs MySQL 64 位庫

現象:無法解析的外部符號 鏈接錯誤,庫路徑、依賴項全對。
根因:VS 專案平台默認 Win32(32位),嘗試鏈接 64 位 libmysql.lib。
解決:配置管理器 → 活動解決方案平台 → 新建 x64 → 刪除 Win32。或下載 32 位庫文件替換。

掌握原生 API 開發,擺脫驅動依賴,構建高性能 C++ 數據庫應用。

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