MySQL是一種廣泛使用的關系型數據庫,提供了許多API和接口用于與數據庫進行交互。其中,使用C接口來編寫MySQL數據庫訪問程序是非常常見的。在這篇文章中,我們將學習如何編寫MySQL C API程序來連接和操作數據庫。
首先,我們需要包含MySQL的頭文件及其它相關的庫文件。在C語言中,我們使用“#include”指令來引入頭文件,使用“#define”指令來定義常量和宏。在連接MySQL數據庫時,我們需要定義一些常用的參數,例如數據庫主機名、用戶名、密碼、數據庫名稱等。下面是一個常量定義的例子:
#define MYSQL_HOST "localhost" #define MYSQL_USER "root" #define MYSQL_PASS "123456" #define MYSQL_DB "test"
接下來,我們需要連接到MySQL數據庫。使用MySQL C API提供的函數“mysql_init”來初始化一個連接對象。然后,使用“mysql_real_connect”來連接到指定的數據庫。
MYSQL *conn; conn = mysql_init(NULL); if(!mysql_real_connect(conn, MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); }
連接到數據庫之后,我們可以開始執行各種操作,例如查詢、插入、更新、刪除等操作。對于查詢操作,我們可以使用“mysql_query”函數來執行一個SQL語句。這個函數返回一個“MYSQL_RES”類型的結果集對象。我們可以使用“mysql_fetch_row”函數來逐行地讀取查詢結果。下面是一個查詢操作的例子:
char query[1024]; MYSQL_RES *result; MYSQL_ROW row; /* 組裝查詢語句 */ snprintf(query, sizeof(query), "SELECT * FROM users WHERE name='%s' AND age='%d'", "張三", 18); /* 執行查詢操作 */ if(mysql_query(conn, query)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } /* 獲取查詢結果集 */ result = mysql_store_result(conn); /* 遍歷查詢結果 */ while((row = mysql_fetch_row(result))) { printf("name=%s, age=%s\n", row[0], row[1]); } /* 釋放結果集對象 */ mysql_free_result(result);
對于插入、更新、刪除等操作,我們可以使用“mysql_real_query”函數來執行SQL語句。如果執行成功,則返回受影響的記錄數。下面是一個插入操作的例子:
char query[1024]; int affected_rows; /* 組裝插入語句 */ snprintf(query, sizeof(query), "INSERT INTO users (name, age) VALUES('%s', '%d')", "張三", 18); /* 執行插入操作 */ if(mysql_real_query(conn, query, strlen(query))) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } /* 獲取受影響的記錄數 */ affected_rows = mysql_affected_rows(conn); printf("insert %d rows\n", affected_rows);
最后,我們需要釋放連接對象并關閉數據庫連接。使用“mysql_close”函數可以關閉連接。
/* 關閉連接 */ mysql_close(conn);
到此為止,我們已經學習了如何使用MySQL C API來連接和操作MySQL數據庫。希望這篇文章能對你有所幫助!