C语言MySQL实现注册表功能(c mysql注册表)
C语言MySQL实现注册表功能
在现代化的互联网时代,注册表是一个非常重要的功能,它可以让用户快速地完成注册的流程,并且保存用户的相关信息,方便下一次登录时直接获取信息。本文将介绍如何使用C语言和MySQL数据库来实现一个简单的注册表系统。
需要安装MySQL数据库,并创建一个表来存储用户信息。以下是创建用户表的SQL语句:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL, eml VARCHAR(50) NOT NULL UNIQUE,
phone VARCHAR(20) NOT NULL UNIQUE);
接下来,我们可以使用C语言编写一个控制台应用程序来实现注册表功能。
需要在程序中包含mysql.h和stdlib.h头文件,并在代码中连接MySQL数据库。以下是代码示例:
#include
#include
MYSQL *conn;MYSQL_RES *res;
MYSQL_ROW row;
int mn() { /* 连接MySQL数据库 */
conn = mysql_init(NULL); if (mysql_real_connect(conn, "localhost", "root", "123456", "testdb", 0, NULL, 0) == NULL) {
printf("Error: Can not connect to MySQL database.\n"); exit(EXIT_FLURE);
} /* ... */
}
然后,我们可以编写一个用于添加用户的函数。以下是添加用户的函数代码示例:
void registerUser(char *username, char *password, char *eml, char *phone) {
char *insert_query; asprintf(&insert_query, "INSERT INTO users (username, password, eml, phone) VALUES ('%s', '%s', '%s', '%s')", username, password, eml, phone);
int ret = mysql_query(conn, insert_query); if (ret != 0) {
printf("Error: Can not insert user data into MySQL database.\n"); exit(EXIT_FLURE);
} printf("Register success.\n");
}
该函数使用了asprintf函数来创建一个SQL插入语句,并使用mysql_query函数执行该语句,将用户信息插入到数据库中。
除了添加用户的函数,我们还可以编写一个用于验证用户登录信息的函数。以下是验证用户信息的代码示例:
int loginUser(char *username, char *password) {
char *select_query; asprintf(&select_query, "SELECT * FROM users WHERE username='%s'", username);
int ret = mysql_query(conn, select_query); if (ret != 0) {
printf("Error: Can not select user data from MySQL database.\n"); exit(EXIT_FLURE);
} res = mysql_use_result(conn);
if (mysql_num_rows(res) == 0) { printf("Error: Username not found.\n");
return 0; }
row = mysql_fetch_row(res); if (strcmp(row[2], password) != 0) {
printf("Error: Password incorrect.\n"); return 0;
} printf("Login success.\n");
return 1;}
该函数通过查询用户名和密码是否匹配来验证用户信息,并返回一个表示验证结果的整数。
我们可以在mn函数中调用这些函数来完成注册表的功能。以下是一个完整的代码示例:
#include
#include
MYSQL *conn;MYSQL_RES *res;
MYSQL_ROW row;
void registerUser(char *username, char *password, char *eml, char *phone) { char *insert_query;
asprintf(&insert_query, "INSERT INTO users (username, password, eml, phone) VALUES ('%s', '%s', '%s', '%s')", username, password, eml, phone); int ret = mysql_query(conn, insert_query);
if (ret != 0) { printf("Error: Can not insert user data into MySQL database.\n");
exit(EXIT_FLURE); }
printf("Register success.\n");}
int loginUser(char *username, char *password) { char *select_query;
asprintf(&select_query, "SELECT * FROM users WHERE username='%s'", username); int ret = mysql_query(conn, select_query);
if (ret != 0) { printf("Error: Can not select user data from MySQL database.\n");
exit(EXIT_FLURE); }
res = mysql_use_result(conn); if (mysql_num_rows(res) == 0) {
printf("Error: Username not found.\n"); return 0;
} row = mysql_fetch_row(res);
if (strcmp(row[2], password) != 0) { printf("Error: Password incorrect.\n");
return 0; }
printf("Login success.\n"); return 1;
}
int mn() { /* 连接MySQL数据库 */
conn = mysql_init(NULL); if (mysql_real_connect(conn, "localhost", "root", "123456", "testdb", 0, NULL, 0) == NULL) {
printf("Error: Can not connect to MySQL database.\n"); exit(EXIT_FLURE);
}
registerUser("test", "password", "test@example.com", "123456789"); loginUser("test", "password");
mysql_close(conn); exit(EXIT_SUCCESS);
}
通过以上方法,我们可以使用C语言和MySQL数据库来实现一个简单的注册表系统,实现用户的注册和登录功能。当然,该系统还可以进一步完善,例如添加一个修改用户信息和删除用户的功能,以满足更复杂的需求。