【发布时间】:2020-11-08 01:59:50
【问题描述】:
我正在尝试创建一个登录系统,如果有人登录,它应该在登录 GUI 之后的 Qt GUI 上显示他们的姓名。
我尝试使用下面的代码,但是标签只是空白,所以我假设问题来自数据库。我们将不胜感激所有帮助,谢谢。
#include "TaxiCoZa.h"
TaxiCoZa::TaxiCoZa(QWidget *parent):QWidget(parent) {
ui.setupUi(this);
Connection x;
isConnected(x)
};
void TaxiCoZa::on_loginButton_clicked() {
emailInput = ui.emailEdit1->text();
passwordInput = ui.passwordEdit1->text();
Connection y;
QSqlQuery query;
query.prepare("SELECT * FROM riders WHERE email='" + emailInput + "' and password='" + passwordInput + "'");
if (query.exec()) {
int count = 0;
while (query.next()) {
count++;
}
// scenario for the correct password
if (count == 1) {
QString name;
QSqlQuery query2;
query2.prepare("SELECT (name) FROM riders WHERE email='" + emailInput + "' and password='" + passwordInput + "'");
query2.exec();
while (query.next())
{
name = query2.value(0).toString();
break;
}
y.connClose();
this->hide();
Book b;
b.setGreetingLabel("Hello, " + name);
b.exec();
}
}
}
【问题讨论】:
-
以下两个答案都不正确(如果他第一个向您展示了如何避免 sql 注入)。您正在使用 QSqlQuery::next() 检索整个数据并稍后尝试再次读取它,但 next() 无法再返回任何内容,因为您已经阅读了所有数据。
标签: c++ visual-studio qt