對于很多需要數據庫支持的應用,提供登錄功能是必不可少的。下面我將介紹如何使用C語言和MySQL數據庫實現登錄功能。
首先需要用到MYSQL C API,這是C語言操作MySQL的API庫。下載地址:https://dev.mysql.com/downloads/connector/c/
接下來是實現代碼:
#include#include #include int main() { MYSQL db; mysql_init(&db); //初始化數據庫 if(mysql_real_connect(&db, "localhost", "root", "password", "test", 0, NULL, 0)) //連接數據庫 { printf("MySQL database connected.\n"); char username[20]; char password[20]; printf("Enter your username: "); scanf("%s", username); //獲取輸入的用戶名 printf("Enter your password: "); scanf("%s", password); //獲取輸入的密碼 char query[100]; sprintf(query, "SELECT * FROM users WHERE username='%s' AND password='%s'", username, password); //查詢用戶表中是否存在輸入的用戶名和密碼 if(mysql_query(&db, query) == 0) //查詢成功 { MYSQL_RES *result = mysql_store_result(&db); int num_fields = mysql_num_fields(result); MYSQL_ROW row; if(num_fields >0 && (row = mysql_fetch_row(result))) { printf("Welcome, %s!\n", row[1]); //輸出歡迎信息 } else { printf("Invalid username or password.\n"); //用戶名或密碼錯誤 } mysql_free_result(result); //釋放結果集 } else //查詢失敗 { printf("Query failed: %s\n", mysql_error(&db)); } mysql_close(&db); //關閉數據庫連接 } else //連接失敗 { printf("MySQL database connection failed: %s\n", mysql_error(&db)); } return 0; }
需要注意的幾點:
- 連接數據庫時需要填寫主機名、用戶名、密碼和數據庫名。
- 查詢語句中使用%s來代替輸入的用戶名和密碼。如果不轉義查詢語句中的特殊字符,可能會導致SQL注入攻擊。
- 查詢成功后,使用mysql_fetch_row()函數獲取結果集中的一行數據。這里假設用戶表中有id、username和password三個字段,因此$row[1]代表用戶名。
以上就是使用C語言和MySQL數據庫實現簡單登錄功能的全部內容。