MySQL是開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),C是一種程序設(shè)計語言,兩者結(jié)合起來,可以使用C語言連接MySQL數(shù)據(jù)庫實例。
在使用C連接MySQL數(shù)據(jù)庫之前,需要先安裝MySQL C API,一般會集成在MySQL數(shù)據(jù)庫的安裝包中。
#include//包含mysql頭文件 int main(int argc, char **argv) { MYSQL *conn; //定義MYSQL結(jié)構(gòu)體指針 MYSQL_RES *result; //定義MYSQL_RES結(jié)構(gòu)體指針,用來保存查詢結(jié)果集 MYSQL_ROW row; //定義MYSQL_ROW結(jié)構(gòu)體指針,用來保存結(jié)果集中的一行數(shù)據(jù) int res; //定義一個表示執(zhí)行結(jié)果是否成功的變量 conn = mysql_init(NULL); //初始化MYSQL結(jié)構(gòu)體 if (conn == NULL) { printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn)); exit(1); //如果初始化失敗,退出程序 } if (mysql_real_connect(conn, "localhost", "root", "password", NULL, 0, NULL, 0) == NULL) { printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn)); exit(1); //如果連接失敗,退出程序 } res = mysql_query(conn, "show databases"); if (res != 0) { printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn)); exit(1); //如果查詢失敗,退出程序 } result = mysql_store_result(conn); if (result == NULL) { printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn)); exit(1); //如果保存結(jié)果集失敗,退出程序 } while ((row = mysql_fetch_row(result)) != NULL) { printf("%s\n", row[0]); //逐行輸出查詢結(jié)果 } mysql_free_result(result); //釋放資源 mysql_close(conn); //關(guān)閉連接 return 0; }
上面的代碼演示了如何使用C語言連接MySQL數(shù)據(jù)庫,并查詢所有數(shù)據(jù)庫的名稱。
首先使用mysql_init函數(shù)初始化一個MYSQL結(jié)構(gòu)體,接著使用mysql_real_connect函數(shù)連接數(shù)據(jù)庫,該函數(shù)的參數(shù)依次是MYSQL結(jié)構(gòu)體指針、主機名、用戶名、密碼、數(shù)據(jù)庫名、端口號和套接字類型。
如果連接成功,接著通過mysql_query函數(shù)執(zhí)行SQL語句,并使用mysql_store_result函數(shù)保存查詢結(jié)果集。
最后使用mysql_fetch_row函數(shù)逐行輸出查詢結(jié)果,使用mysql_free_result函數(shù)釋放結(jié)果集,使用mysql_close函數(shù)關(guān)閉連接。