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);
}