【发布时间】:2016-08-03 19:28:20
【问题描述】:
我有一个这样的小功能
bool QcgDatabase::onceindb(const QString& userId)
{
mDb->prepareSqlQuery("SELECT count(*) FROM mytable WHERE userid=:userId;", "database");
mDb->prepareBindValue(":userId", userId);
mDb->sqlExec();
bool d = mDb->sqlQuery().isActive();
QVariant c = mDb->sqlQuery().value(QString("count(*)"));
int e = c.toInt();
if (e == 1) {
return true;
}
else {
return false;
}
}
当我在 SQL 中执行此命令时,结果如下所示
我只是想在下面取值2进行比较,但是在我调试的代码中,QVariant c总是返回无效,因此e is always = 0。我以为我的 SQL 命令没有激活,但是当我调试时,bool dalways 返回 true。你们知道为什么吗?我怎样才能按预期收到2?
【问题讨论】:
-
if (c == 1)这应该是if (e == 1)吗? -
你应该检查错误...
-
@HonestAbe:是的,对不起,应该是
e==1。我已经更正了,你能帮我指出问题吗? -
@hyde:我再次检查了
bool valid = mDb->sqlQuery().isValid();,结果是false。但我仍然不知道为什么它无效。 :( -
你可能应该阅读
mDb的文档...你想要doc.qt.io/qt-5/qsqldatabase.html#lastError这样的东西