Qt SQL query.exec始终返回True

时间:2014-12-29 14:18:08

标签: c++ sql qt sqlite

我正在使用数据库在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();
}

谢谢

1 个答案:

答案 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();
}