首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C/C++ 存取 MySQL 資料庫完整範例 (Windows)

     編輯:關於C++

原始碼範例

以下示範使用 MySQL C API 連線、查詢、讀取結果並釋放資源:

#include <windows.h>
#include <iostream>
#include "mysql.h"  // 路徑視安裝目錄調整

int main() {
    char *user = "root", *pwd = "123456", *dbname = "chardb";
    MYSQL mysql;
    MYSQL_RES *res;
    MYSQL_ROW row;
    unsigned long num_rows;
    int ret;

    mysql_init(&mysql);
    if (mysql_real_connect(&mysql, NULL, user, pwd, dbname, 0, NULL, 0)) {
        printf("連線成功!\n");
        ret = mysql_query(&mysql, "select * from accounts");
        if (!ret) {
            printf("查詢成功!\n");
            res = mysql_store_result(&mysql);
            if (res) {
                printf("儲存結果成功!\n");
                num_rows = mysql_num_rows(res);
                if (num_rows) {
                    printf("%lu\n", num_rows);
                    while ((row = mysql_fetch_row(res))) {
                        printf("%s\t%s\t%s\t%s\t%s\t%s\n",
                               row[0], row[1], row[2], row[3], row[4], row[5]);
                    }
                }
                mysql_free_result(res);
            }
        }
        mysql_close(&mysql);
    } else {
        printf("連線失敗\n");
    }
    return 0;
}

關鍵 API 流程

  1. mysql_init() 初始化 MYSQL 結構。
  2. mysql_real_connect() 建立實際連線。
  3. mysql_query() 執行 SQL 陳述式。
  4. mysql_store_result() 取得完整結果集 (緩衝模式)。
  5. mysql_num_rows() / mysql_fetch_row() 遍歷資料列。
  6. mysql_free_result() 釋放結果集記憶體。
  7. mysql_close() 關閉連線,**所有路徑 (成功/失敗/提前返回) 都必須呼叫**。

改良版資源管理

第二段程式碼在每個 exit 前均呼叫 mysql_close(),避免連線洩漏。實務上建議以 RAII 包裝 MYSQL 與 MYSQL_RES,確保例外安全。

編譯提示

  • 連結庫:libmysql.lib (Windows) 或 -lmysqlclient (Linux)。
  • 包含目錄:MySQL 安裝目錄下的 include。
  • 執行時需 libmysql.dll 在 PATH 或程式目錄。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved