作业:结合数据库的方式完成用户注册,要求 客户端输入账户密码,发送给服务器 服务器接收到账户密码后,写入到数据库中 不允许重复注册
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
// 定义数据库连接信息
#define DB_HOST "localhost"
#define DB_USER "root"
#define DB_PASSWORD "password"
#define DB_NAME "mydatabase"
// 主函数
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
const char *server = DB_HOST;
const char *user = DB_USER;
const char *password = DB_PASSWORD;
const char *database = DB_NAME;
// 初始化数据库连接
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
return 1;
}
// 用户注册
int id;
char username[256];
char password[256];
printf("Enter ID: ");
scanf("%d", &id);
printf("Enter username: ");
scanf("%s", username);
printf("Enter password: ");
scanf("%s", password);
// 查询数据库中是否已存在相同的账户名
char selectQuery[256];
snprintf(selectQuery, sizeof(selectQuery), "SELECT * FROM users WHERE username='%s'", username);
if (mysql_query(conn, selectQuery)) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
return 1;
}
res = mysql_use_result(conn);
if ((row = mysql_fetch_row(res)) != NULL) {
fprintf(stderr, "Username already exists\n");
mysql_free_result(res);
return 1;
}
mysql_free_result(res);
// 插入数据到用户表
char insertQuery[256];
snprintf(insertQuery, sizeof(insertQuery), "INSERT INTO users (id, username, password) VALUES (%d, '%s', '%s')", id, username, password);
if (mysql_query(conn, insertQuery)) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
return 1;
}
printf("Registration successful\n");
// 关闭数据库连接
mysql_close(conn);
return 0;
}