gpt4 book ai didi

c++ - Qt SQL query.exec 总是返回 True

转载 作者:行者123 更新时间:2023-11-28 06:30:28 32 4
gpt4 key购买 nike

我在 qt 中使用数据库创建了一个登录系统,但是当我在 qt 中运行查询时,它总是返回 true,即使该项目为 false。

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

谢谢

最佳答案

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

关于c++ - Qt SQL query.exec 总是返回 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27690568/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com