【问题标题】:C++ MySQL not returning ResultSet correctlyC++ MySQL 未正确返回 ResultSet
【发布时间】: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-&gt;next()) 总是评估false,无论我使用的是普通语句还是 PreparedStatement。更奇怪的是,当我将语句更改为 SELECT * FROM Users 时,它确实返回了行。这不可能是因为我的 WHERE 子句,因为它在 MySQL 命令上正确运行。当我删除 cin.ignore() 时它仍然不起作用,所以这也不是问题。

任何帮助将不胜感激!

【问题讨论】:

    标签: c++ mysql resultset


    【解决方案1】:

    你有一个错字。当您要求输入密码时,您将其写入用户名字符串。

    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;
    

    【讨论】:

    • 天哪,我怎么没看到这个 xD 非常感谢:D
    猜你喜欢
    • 2012-08-07
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2019-01-27
    • 2013-01-06
    • 2020-03-15
    相关资源
    最近更新 更多