C++ MySQL 没有正确返回结果集

C++ MySQL not returning ResultSet correctly

所以我有一个 SQL 语句可以在 mySQL 命令上完美运行,但是当我在 C++ 中执行完全相同的语句时,它 return 是一个空的结果集...

代码的相关部分如下:

ps = con->prepareStatement("SELECT UserID, DB, IsAdmin FROM Users WHERE 
Username = ? AND Password = ?");

cout << "Username: ";
cin >> username;
cin.ignore(INT_MAX, '\n');
cout << "Password: ";
cin >> username;
cin.ignore(INT_MAX, '\n');
cout << endl;

ps->setString(1, username.c_str());
ps->setString(2, password.c_str());
rs = ps->executeQuery();
if (rs->next())
{
    connected = true;
    sessionID = rs->getInt(1);
    database = rs->getString(2).c_str();
    admin = rs->getBoolean(2);
}

if(rs->next()) 总是计算 false,无论我使用普通语句还是 PreparedStatement。更奇怪的是,当我将语句更改为 SELECT * FROM Users 时,它会执行 return 行。这不可能是因为我的 WHERE 子句,因为它在 MySQL 命令上正确运行。当我删除 cin.ignore() 时它仍然不起作用,所以这也不是问题。

如有任何帮助,我们将不胜感激!

你打错了。当您询问密码时,您正在将其写入用户名字符串。

cout << "Username: ";
cin >> username;
cin.ignore(INT_MAX, '\n');
cout << "Password: ";
cin >> username;

更改为:

cout << "Username: ";
cin >> username;
cin.ignore(INT_MAX, '\n');
cout << "Password: ";
cin >> password;