MySQL 提供 C 語言客戶端庫 (libmysqlclient),眾多官方客戶端工具即以 C 開發。原始碼 clients 目錄可作參考範例。
sudo apt-get install mysql-client libmysqlclient15-dev libmysqlclient15off mysql-server gcc make
/* mysql_c_api.c */
#include
#include
#include
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost";
char *user = "root";
char *password = ""; // 修改為你的密碼
char *database = "mysql";
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, 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);
}
res = mysql_use_result(conn);
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s\n", row[0]);
mysql_free_result(res);
mysql_close(conn);
return 0;
}
mysql_config 提供編譯旗標與鏈接庫資訊:
$ mysql_config --cflags
-I/usr/include/mysql -g -pipe -m64 -D_GNU_SOURCE ...
$ mysql_config --libs
-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto
gcc -o mysql_c_api $(mysql_config --cflags) mysql_c_api.c $(mysql_config --libs)
./mysql_c_api
mysql_init() 初始化連接句柄mysql_real_connect() 建立連接mysql_query() 發送 SQLmysql_use_result() / mysql_store_result() 獲取結果集mysql_fetch_row() 逐行讀取mysql_free_result() 釋放結果集mysql_close() 關閉連接錯誤處理:每步檢查返回值,失敗時用 mysql_error(conn) 取得錯誤訊息。