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

C 進階實戰:Windows 上搭建 MariaDB Connector/C 開發環境與 Blob 資料操作

     編輯:關於C語言

C 進階實戰:Windows 上搭建 MariaDB Connector/C 開發環境與 Blob 資料操作

環境搭建

Windows 10 + Visual Studio 2015,選擇 Windows 方便閱讀原始碼。

  1. 下載 MariaDB Windows 版:官網
  2. 下載 MariaDB Connector/C:官網
  3. 解壓 MariaDB 至 E 盤,將 bin 目錄加入系統 PATH。
  4. 安裝 Connector/C,產生 C:\MariaDB\ 目錄含 include、lib、bin。
  5. 以管理員身分啟動服務:
    mysqld.exe --install mariadb
    net start mariadb
  6. 建立測試資料庫、資料表、用戶與權限(SQL 腳本見文中)。

VS 專案配置

  • 屬性 → VC++ 目錄 → 包含目錄加入 Connector/C include、include/mysql。
  • 庫目錄加入 lib。
  • 連結器 → 輸入 → 附加相依性加入 libmariadb.lib。
  • 執行時需將 libmariadb.dll 放置輸出目錄或 PATH 路徑。

Hello World 範例

#include 
#define _STR_MHOST "localhost"
#define _STR_MUSER "seluser"
#define _STR_MPASSWD "7seluser"
#define _STR_MDB "test"

static inline void _mysql_check(MYSQL *con) {
    fprintf(stderr, "%s\n", mysql_error(con));
    mysql_close(con); exit(EXIT_FAILURE);
}

int main() {
    MYSQL *con = mysql_init(NULL);
    if (!con) _mysql_check(con);
    if (!mysql_real_connect(con, _STR_MHOST, _STR_MUSER, _STR_MPASSWD, _STR_MDB, 0, NULL, 0))
        _mysql_check(con);
    if (mysql_query(con, "show tables;")) _mysql_check(con);
    puts("mariadb connect and run succeeded!");
    MYSQL_RES *res = mysql_store_result(con);
    if (!res) _mysql_check(con);
    MYSQL_ROW row;
    unsigned rlen = mysql_num_fields(res);
    printf("row length = %u\n", rlen);
    while ((row = mysql_fetch_row(res))) {
        for (unsigned i = 0; i < rlen; ++i) printf("%s ", row[i]);
        putchar('\n');
    }
    mysql_free_result(res);
    mysql_close(con);
    getchar(); return 0;
}

執行結果:

Blob 資料 Insert 與 Select

定義對應結構體 workers 含 workers_ext(對應 blob 欄位)。使用 mysql_real_escape_string 將二進位結構序列化為字串寫入。
完整 mariadb_insert.c 與 mariadb_select.c 見文中。
關鍵點:strtoul 以無號長整數解析 ID,避免有號轉換符號位問題。
執行結果:

編碼補充

資料庫採 latin1 而非 utf8,因 C/C++ 傳統使用 ASCII,latin1 為 ASCII 超集,漢字可正常顯示,避免編碼轉換麻煩。

官方 API 文件:MariaDB Connector/C API Functions

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