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