使用 Qt 从 SQLite 中选择

2024-01-09

我尝试在 Linux 上的 Qt 4.5.3 上处理 SQLite 数据库。我已经创建了数据库。

然后,我尝试在 Qt 上执行选择:

db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(filename); // Here is FULL path to the database. I've checked it twice :)
bool ok = db.open();
qDebug() << db.tables();

QSqlQuery query;
query.exec("select * from lessons");
qDebug() << query.size();
qDebug() << query.isSelect();
qDebug() << query.isValid();

但调试控制台说:

("lessons", "weeklessons", "weeks") 
-1 
true 
false 

为什么什么都不选择?我做错了什么?


如果查询位于有效记录上,则 isValid() 方法返回 true,但在调用 exec() 后,情况并非如此:您必须首先移动到有效记录,例如使用 query.first() 或 query。下一个()。 请参阅 Qt 文档:http://doc.qt.io/archives/4.6/qsqlquery.html http://doc.qt.io/archives/4.6/qsqlquery.html

size() 返回 -1 并不意味着没有结果:SQLite 是无法直接获得查询大小的数据库之一(请参阅 QSqlDriver::hasFeature() 的文档)。您可以检查是否返回行并使用循环和 query.next() 查找大小。

根据您想要对选择结果执行的操作,您还可以使用 QSqlQueryModel 而不是 QSqlQuery。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Qt 从 SQLite 中选择 的相关文章

随机推荐