【发布时间】:2017-05-12 09:35:47
【问题描述】:
所以我有一个在 mySQL 命令上完美运行的 SQL 语句,但是当我在 C++ 中执行完全相同的语句时,它返回一个空的 ResultSet...
以下是代码的相关部分:
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 时,它确实返回了行。这不可能是因为我的 WHERE 子句,因为它在 MySQL 命令上正确运行。当我删除 cin.ignore() 时它仍然不起作用,所以这也不是问题。
任何帮助将不胜感激!
【问题讨论】: