我正在尝试创建一个登录系统,如果一个人登录,它应该在登录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();
}
}
}
答案 0 :(得分:1)
您的query.prepare("Select ...")
似乎写得不正确。
试试这个;
query.prepare("SELECT * FROM riders WHERE email= 'emailInput' and password='passwordInput'");
此外,对第二个查询进行相同的更改。遵循该格式。
答案 1 :(得分:0)
您不能以彼此相同的方式在彼此之间运行两个查询。在第一个查询中,直接SELECT (name)
,不要运行另一个查询。并确保您的SQLite数据库中存在name
。
如果必须运行两个查询,请尝试; mysql_query()
和mysql_real_query()
但是仍然不能同时运行两个(或多个)语句
连接。不可能。您可能可以发送多个语句
立刻,但强烈不鼓励。但是即使在那种情况下
语句将一个接一个地执行。
您最好的选择,尝试在您的第一个查询中获得name
。
答案 2 :(得分:0)
我通过使用QSqlQuery类中的first()函数设法解决了该问题
请参见下面的代码进行更改
void TaxiCoZa::on_loginButton_clicked() {
QString emailInput = ui.emailEdit1->text();
QString passwordInput = ui.passwordEdit1->text();
QSqlQuery query;
query.prepare("SELECT * FROM riders WHERE email='" + emailInput + "' and password='" + passwordInput + "'");
if (query.exec()) {
int count = 0;
while (query.next()) {
count++;
}
if (count == 1) {
query.first(); // change made here
QString name = query.value(1).toString();
y.connClose();
this->hide();
Book b;
b.setGreetingLabel("Hello, " + name);
b.exec();
}
else if (count > 1) {
QMessageBox::critical(this, "Error", "DUPLICATE");
}
else{
QMessageBox::critical(this, "Error", "INCORRECT EMAIL OR PASSWORD ENTERED!!!");
}
}
}