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;
所以我有一个 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;