Qt if else 问题 else 不起作用
Qt if else issue else doesnt works
你好,这是代码,所以如果有效并向我显示消息,但没有反应,不显示任何消息,尝试了很多东西,但当我输入正确的登录名和密码时,它总是有效,如果它是错误的,它不起作用也尝试过使 != 相同
if(db.open())
{
// Insert Query
QSqlQuery query(QSqlDatabase::database("MyConnection"));
query.prepare("SELECT * FROM users WHERE email = :email AND password = :password");
query.bindValue(":email", email);
query.bindValue(":password", password);
if(!query.exec())
{
QMessageBox::information(this,"Failed","Error please try again");
}
else
{
while(query.next())
{
QString emailLog = query.value(1).toString();
QString passwordLog = query.value(4).toString();
if(emailLog == email && passwordLog == password){
QMessageBox::information(this,"SUCCESS","SUCCESS");
db.close();
}
else
{
ui->plstryagain->show();
db.close();
}
}
}
}
else
{
QMessageBox::information(this, "Database Error", "Can't Connect To Database");
}
}
您的 else 语句(您有很多,但没有明确指定是哪个)永远不会 运行。如果没有命中 (user; pass) 你的 while 将没有任何迭代。
事实上,if(emailLog == email && passwordLog == password)
出于同样的原因是多余的。
您的代码段:
while(query.next())
{
QString emailLog = query.value(1).toString();
QString passwordLog = query.value(4).toString();
if(emailLog == email && passwordLog == password){
QMessageBox::information(this,"SUCCESS","SUCCESS");
db.close();
}
else
{
ui->plstryagain->show();
db.close();
}
}
也许这样更好:
if (query.hasNext()) {
QMessageBox::information(this,"SUCCESS","SUCCESS");
db.close();
} else {
ui->plstryagain->show();
db.close();
}
P/S:
每当您认为基本语言功能不起作用时,很可能是您的错 :P
你好,这是代码,所以如果有效并向我显示消息,但没有反应,不显示任何消息,尝试了很多东西,但当我输入正确的登录名和密码时,它总是有效,如果它是错误的,它不起作用也尝试过使 != 相同
if(db.open())
{
// Insert Query
QSqlQuery query(QSqlDatabase::database("MyConnection"));
query.prepare("SELECT * FROM users WHERE email = :email AND password = :password");
query.bindValue(":email", email);
query.bindValue(":password", password);
if(!query.exec())
{
QMessageBox::information(this,"Failed","Error please try again");
}
else
{
while(query.next())
{
QString emailLog = query.value(1).toString();
QString passwordLog = query.value(4).toString();
if(emailLog == email && passwordLog == password){
QMessageBox::information(this,"SUCCESS","SUCCESS");
db.close();
}
else
{
ui->plstryagain->show();
db.close();
}
}
}
}
else
{
QMessageBox::information(this, "Database Error", "Can't Connect To Database");
}
}
您的 else 语句(您有很多,但没有明确指定是哪个)永远不会 运行。如果没有命中 (user; pass) 你的 while 将没有任何迭代。
事实上,if(emailLog == email && passwordLog == password)
出于同样的原因是多余的。
您的代码段:
while(query.next())
{
QString emailLog = query.value(1).toString();
QString passwordLog = query.value(4).toString();
if(emailLog == email && passwordLog == password){
QMessageBox::information(this,"SUCCESS","SUCCESS");
db.close();
}
else
{
ui->plstryagain->show();
db.close();
}
}
也许这样更好:
if (query.hasNext()) {
QMessageBox::information(this,"SUCCESS","SUCCESS");
db.close();
} else {
ui->plstryagain->show();
db.close();
}
P/S: 每当您认为基本语言功能不起作用时,很可能是您的错 :P