C是一種高級(jí)編程語(yǔ)言,被廣泛應(yīng)用于許多領(lǐng)域中。其中,在與數(shù)據(jù)庫(kù)交互的過(guò)程中,C語(yǔ)言可以通過(guò)調(diào)用MySQL數(shù)據(jù)庫(kù)的API完成各種數(shù)據(jù)查詢的功能。
使用C語(yǔ)言對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行查詢,需要先安裝MySQL C API的庫(kù)文件,之后在編寫程序時(shí)引入頭文件“mysql.h”。
#include <mysql.h>
接下來(lái),需要建立一個(gè)MySQL結(jié)構(gòu)體并初始化:
MYSQL mysql; mysql_init(&mysql);
然后,需要使用mysql_real_connect()函數(shù)連接數(shù)據(jù)庫(kù):
mysql_real_connect(&mysql, "localhost", "root", "password", "dbname", 0, NULL, 0);
其中,第一個(gè)參數(shù)是MySQL結(jié)構(gòu)體的地址,第二個(gè)參數(shù)是數(shù)據(jù)庫(kù)的地址,第三個(gè)參數(shù)是連接數(shù)據(jù)庫(kù)的用戶名,第四個(gè)參數(shù)是密碼,第五個(gè)參數(shù)是數(shù)據(jù)庫(kù)名。
接著,就可以使用mysql_query()函數(shù)向數(shù)據(jù)庫(kù)發(fā)送SQL查詢語(yǔ)句,并且獲取查詢結(jié)果。例如,我們查詢“student”表中成績(jī)大于80的學(xué)生:
MYSQL_RES *res; MYSQL_ROW row; mysql_query(&mysql, "SELECT * FROM student WHERE score > 80"); res = mysql_store_result(&mysql); while(row = mysql_fetch_row(res)) { printf("%s %s %d\n", row[0], row[1], atoi(row[2])); } mysql_free_result(res);
在這個(gè)示例中,首先使用mysql_query()函數(shù)發(fā)送SQL查詢語(yǔ)句,“SELECT * FROM student WHERE score > 80”,接著使用mysql_store_result
函數(shù)獲取查詢結(jié)果,并使用mysql_fetch_row
函數(shù)逐條讀取查詢結(jié)果。
最后,別忘了使用mysql_free_result()函數(shù)釋放結(jié)果集。
使用C語(yǔ)言對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行查詢,需要更多的代碼編寫。但是,以這種方式編寫的程序?qū)⒛軌蛴行У嘏c數(shù)據(jù)庫(kù)進(jìn)行交互,實(shí)現(xiàn)更復(fù)雜的查詢操作。