我正在使用数据库在qt中创建一个登录系统但是当我在qt中运行查询时,它总是返回true,即使该项是假的。
sql数据库连接代码在
下面QSqlDatabase login = QSqlDatabase::addDatabase("QSQLITE");
login.setDatabaseName("/Users/Daniel/Dropbox/Stock_Control.sqlite");
if(!login.open())
ui->label->setText("Unable To Connect To Database");
SQL查询代码位于
之下static Home *home = new Home;
QSqlQuery query;
QString Username = ui->Username_lineEdit->text();
QString Password = ui->Password_lineEdit->text();
if(query.exec("SELECT * FROM Program_account WHERE Login = '"+ Username +"' AND Password = '"+ Password +"' "))
{
tries = 0;
home->show();
close();
}
谢谢
答案 0 :(得分:1)
QSqlQuery::exec()
会返回true
,即使查询为空。使用QSqlQuery::size()
函数检查查询是否为空。
<强>更新强>
由于QSqlQuery::size()
始终为sqlite返回-1,因此您可以改为使用QSqlQuery::first()
。
您可以执行以下操作:
if(!query.exec("SELECT Login FROM Program_account WHERE Login = '"+ Username +"' AND Password = '"+ Password +"' "))
{
// something is terribly wrong
}
else if(!query.first())
{
// incorrect username or password
}
else
{
tries = 0;
home->show();
close();
}