C语言MySQL同时查询用户名与密码,并分别判断用户名与密码是否正确
时间: 2024-12-20 12:15:03 浏览: 7
在C语言中直接操作数据库通常需要使用MySQL的API库,比如MySQL Connector/C++或libmysqlclient。由于C语言并不支持直接编写SQL语句并获取结果,你需要通过编程的方式来实现这个功能。以下是一个简单的示例,假设已经包含了必要的头文件并且有一个连接到MySQL服务器的对象:
```c
#include <mysql.h>
// 假设已有的函数用于初始化数据库连接
void connect_to_mysql(MySQL *conn);
// 查询用户信息的函数
bool query_user_info(MySQL *conn, const char* username, char** password) {
MYSQL_RES *res;
MYSQL_ROW row;
// 构造SQL查询
char query[128];
sprintf(query, "SELECT password FROM users WHERE username='%s'", username);
// 执行查询
if (mysql_query(conn, query)) {
fprintf(stderr, "Error querying: %s\n", mysql_error(conn));
return false;
}
res = mysql_store_result(conn);
if (res == NULL) {
fprintf(stderr, "No result set: %s\n", mysql_error(conn));
return false;
}
// 从查询结果中读取数据
if ((row = mysql_fetch_row(res)) != NULL) {
*password = strdup(row[0]); // 将密码复制到指针所指向的位置
mysql_free_result(res); // 清理结果集
return true; // 如果找到匹配的记录,则密码正确
} else {
mysql_free_result(res);
return false; // 没有找到匹配的记录,密码错误
}
}
// 关闭数据库连接
void close_mysql_connection(MySQL *conn) {
mysql_close(conn);
}
int main() {
MySQL *conn;
char username[] = "testuser";
char password[64]; // 假设足够大存储密码
// 连接到数据库
if (!connect_to_mysql(&conn)) {
return 1;
}
// 查询并检查用户名和密码
if (query_user_info(conn, username, &password)) {
printf("Username and password are correct.\n");
} else {
printf("Username or password is incorrect.\n");
}
// 关闭连接
close_mysql_connection(conn);
return 0;
}
```
请注意,实际应用中你需要处理更多异常情况,并确保对敏感信息如密码进行适当的加密存储。
阅读全文