在編寫(xiě)c語(yǔ)言程序時(shí),很可能需要與數(shù)據(jù)庫(kù)進(jìn)行交互,其中涉及到的一個(gè)重要操作就是登陸。下面我們介紹一下c語(yǔ)言連接mysql數(shù)據(jù)庫(kù)并實(shí)現(xiàn)登陸的代碼。
//連接mysql數(shù)據(jù)庫(kù) #includeMYSQL *mysql_connect(char *host, char *user, char *pass, char *dbname) { MYSQL *conn; conn = mysql_init(NULL); if(!mysql_real_connect(conn, host, user, pass, dbname, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } return conn; }
上述代碼實(shí)現(xiàn)了連接mysql數(shù)據(jù)庫(kù)的功能,其中host為主機(jī)名,user為用戶名,pass為密碼,dbname為需要連接的數(shù)據(jù)庫(kù)名。若連接成功,則返回一個(gè)MYSQL結(jié)構(gòu)體指針。
//登陸驗(yàn)證 #include#include #include #include int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *host = "localhost"; char *user = "root"; char *pass = "root"; char *dbname = "user"; char query[1000]; char input_name[20], input_pwd[20]; int flag = 1; conn = mysql_connect(host, user, pass, dbname); printf("請(qǐng)輸入用戶名:"); scanf("%s", input_name); printf("請(qǐng)輸入密碼:"); scanf("%s", input_pwd); sprintf(query, "select * from userinfo where username='%s' and password='%s'", input_name, input_pwd); mysql_query(conn, query); res = mysql_store_result(conn); if(mysql_num_rows(res) == 0) { printf("用戶名或密碼錯(cuò)誤!\n"); flag = 0; } mysql_close(conn); return flag; }
上述代碼實(shí)現(xiàn)了登陸驗(yàn)證的功能,其中userinfo表結(jié)構(gòu)為(id int, username char(20), password char(20))。用戶輸入用戶名和密碼之后,通過(guò)sprintf函數(shù)生成一個(gè)查詢語(yǔ)句,并通過(guò)mysql_query函數(shù)向mysql數(shù)據(jù)庫(kù)發(fā)送查詢請(qǐng)求。之后通過(guò)mysql_store_result函數(shù)獲取到查詢結(jié)果,并通過(guò)mysql_num_rows函數(shù)判斷是否有匹配的結(jié)果。若匹配成功,則返回1,否則返回0。