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

Linux C語言 MySQL C API 連接數據庫完整教程

     編輯:關於C語言

開發環境準備


# Ubuntu/Debian
sudo apt-get install libmysqlclient-dev mysql-server gcc make
# 編譯鏈接
gcc -o mysql_demo mysql_demo.c $(mysql_config --cflags --libs)

核心 API 流程

  1. MYSQL *conn = mysql_init(NULL); 初始化連接句柄。
  2. mysql_real_connect(conn, host, user, pass, db, port, unix_socket, flags) 建立連接。
  3. mysql_query(conn, "SQL") 執行 SQL 語句。
  4. MYSQL_RES *res = mysql_use_result(conn) / mysql_store_result(conn) 獲取結果集。
  5. MYSQL_ROW row; while ((row = mysql_fetch_row(res))) 逐行讀取。
  6. mysql_free_result(res); mysql_close(conn); 清理資源。

完整示例:列出 mysql 庫所有表


#include 
#include 
#include 

int main() {
    MYSQL *conn = mysql_init(NULL);
    if (!mysql_real_connect(conn, "localhost", "root", "password", "mysql", 0, NULL, 0)) {
        fprintf(stderr, "連接失敗: %s\n", mysql_error(conn));
        exit(1);
    }
    if (mysql_query(conn, "SHOW TABLES")) {
        fprintf(stderr, "查詢失敗: %s\n", mysql_error(conn));
        exit(1);
    }
    MYSQL_RES *res = mysql_use_result(conn);
    printf("mysql 數據庫表列表:\n");
    MYSQL_ROW row;
    while ((row = mysql_fetch_row(res)))
        printf("%s\n", row[0]);
    mysql_free_result(res);
    mysql_close(conn);
    return 0;
}

關鍵函數對比

函數用途注意
mysql_use_result逐行流式讀取,佔用少記憶體讀取期間不能執行其他查詢
mysql_store_result一次性讀取全部結果到客戶端大結果集佔用大量記憶體
mysql_fetch_row獲取下一行,返回字段指針數組NULL 表示無更多行
mysql_num_fields獲取列數配合 mysql_fetch_field 獲取元數據

錯誤處理最佳實踐

  • 每次 API 調用後檢查返回值,失敗時調用 mysql_error(conn) 獲取詳細信息。
  • 使用 mysql_errno(conn) 區分錯誤碼(如 1062 重複鍵)。
  • 長連接需處理 CR_SERVER_GONE_ERROR(斷線重連)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved