Windows 10 + Visual Studio 2015,選擇 Windows 方便閱讀原始碼。
bin 目錄加入系統 PATH。C:\MariaDB\ 目錄含 include、lib、bin。mysqld.exe --install mariadb net start mariadb
include、include/mysql。lib。libmariadb.lib。libmariadb.dll 放置輸出目錄或 PATH 路徑。#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; }
執行結果:
定義對應結構體 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