在C語言中,連接MySQL數據庫可以使用MySQL提供的C API,下面就是一個簡單的連接MySQL數據庫的例子:
#include#include int main() { MYSQL mysql; MYSQL_RES *result; MYSQL_ROW row; mysql_init(&mysql); mysql_real_connect(&mysql, "localhost", "root", "password", "databasename", 0, NULL, 0); if (mysql_query(&mysql, "SELECT * FROM tablename")) { printf("Query error.\n"); return 1; } result = mysql_store_result(&mysql); while ((row = mysql_fetch_row(result))) { printf("Column1: %s, Column2: %s\n", row[0], row[1]); } mysql_free_result(result); mysql_close(&mysql); return 0; }
需要注意的是,在使用MySQL C API之前,需要安裝MySQL客戶端庫和開發包。
使用"mysql_config --libs"和"mysql_config --cflags"命令可以查看MySQL客戶端庫和開發包的安裝路徑。例如,在Ubuntu系統中,可以使用以下命令安裝MySQL客戶端庫和開發包:
sudo apt-get install libmysqlclient-dev mysql-client
在使用mysql_real_connect函數連接MySQL數據庫時,第一個參數是MySQL結構體指針;第二個參數是MySQL服務器的地址;第三個參數是MySQL用戶名;第四個參數是MySQL用戶密碼;第五個參數是要連接的數據庫名稱;第六個參數是MySQL服務器的端口號;第七個參數是MySQL客戶端庫選項。如果連接失敗,mysql_real_connect函數將返回NULL。
在使用mysql_query函數執行SQL語句時,必須將SQL語句以字符串的形式傳遞給mysql_query函數,mysql_query函數將返回0表示執行成功,返回非0值表示執行失敗。
在使用mysql_store_result函數將執行結果存儲在MYSQL_RES結構體中后,可以使用mysql_fetch_row函數取出一條記錄并以數組的形式返回。MYSQL_ROW是MySQL C API定義的typedef char **MYSQL_ROW;。
在處理完執行結果后,需要使用mysql_free_result函數釋放MYSQL_RES結構體所占用的內存;使用mysql_close函數關閉連接并釋放MYSQL結構體所占用的內存。