VS 中qt编程为什么while(query.next())只会遍历出数据库中的第一条数据且不继续遍历

问题遇到的现象和发生背景

VS 中qt编程为什么while(query.next())只会遍历出数据库中的第一条数据且不继续遍历

问题相关代码,请勿粘贴截图

QString userName = ui.tel->text();
QString pwd = ui.mima->text();
QString NAME;
QString PWD;
QSqlQuery query;
query.exec("select * from qwe");
while (query.next())
{
NAME = query.value(1).toString();
PWD = query.value(2).toString();
qDebug() << NAME;
qDebug() << PWD;

    if (userName == "" || pwd == "")
    {
        QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("输入内容为空"), QMessageBox::Yes);
        break;
    }
    else if (userName == NAME && pwd == PWD)
    {
        QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("登录成功"), QMessageBox::Yes);
        break;
    }
    else
    {
        QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("账号或密码错误"), QMessageBox::Yes);
        break;
    }
}

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

你这个第一条就判断是否正确,然后跳出循环了。
改一下算法。

QString userName = ui.tel->text();
QString pwd = ui.mima->text();

if (userName == "" || pwd == "")
{
    QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("输入内容为空"), QMessageBox::Yes);
    return;
}

QString NAME;
QString PWD;
QSqlQuery query;
query.exec("select * from qwe");
bool isLogin=false;
while (query.next())
{
    NAME = query.value(1).toString();
    PWD = query.value(2).toString();
    qDebug() << NAME;
    qDebug() << PWD;
    if (userName == NAME && pwd == PWD)
    {
        isLogin=true;
        break;
    }   
}

if (isLogin)
{
    QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("登录成功"), QMessageBox::Yes);
}
else
{
    QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("账号或密码错误"), QMessageBox::Yes);
}