C++ QT-SQlite登录应用程序

C++ QT-SQlite登录应用程序,c++,qt,sqlite,C++,Qt,Sqlite,我正在创建一个需要用户登录的应用程序 我的问题是,即使用户输入任何用户名或密码,代码也会像正确登录一样执行 QString email, password; email = ui->loginEmailbox->text(); password = ui->loginPassbox->text(); QSqlQuery qry; qry.prepare("SELECT email FROM userRecords WHERE email = (:email)");

我正在创建一个需要用户登录的应用程序

我的问题是,即使用户输入任何用户名或密码,代码也会像正确登录一样执行

QString email, password;

email = ui->loginEmailbox->text();
password = ui->loginPassbox->text();

QSqlQuery qry;

qry.prepare("SELECT email FROM userRecords WHERE email = (:email)");
qry.bindValue(":email", email);
qry.prepare("SELECT password FROM userRecords WHERE password = (:password)");
qry.bindValue(":password", password);

if(qry.exec()){
    if(qry.next()){
        userMenu usermenu;
        usermenu.setModal(true);
        usermenu.exec();
    }
}else
    ui->loginStatusL->setText("Log-in failed, username or password incorrect!");

您正在准备2个查询并执行一个查询。现在,如果任何密码与此匹配,将登录

qry.prepare("SELECT DISTINCT email FROM userRecords WHERE email = :email AND password = :password");
qry.bindValue(":email", email);
qry.bindValue(":password", password);
这应该是可行的,但这不是检查凭据的最佳/最安全的方法