如何在 QT C++ 中从表的列中获取 SQL 中的所有值
Posted
技术标签:
【中文标题】如何在 QT C++ 中从表的列中获取 SQL 中的所有值【英文标题】:How to get all values in SQL from a table's column, in QT C++ 【发布时间】:2022-01-19 02:37:54 【问题描述】:所以我正在尝试使用 C++ (11) 从 QT 中的 sqlite3 数据库中获取所有值。 我的表名为“Auteurs”,包含所有值的列名为“nom”。
整个表格如下所示:
enter image description here
使用 DB Browser,我成功提取了所有值,但将其实现到接受以下语法的程序中:
Etudiants->exec(QLatin1String("SELECT nom FROM Auteurs WHERE nom is not NULL"));
这只会返回表的第一个值(以 QVariant 的形式)而不是其余的值。 有什么建议如何从表中取出所有值,而不仅仅是 1? 我应该以哪种类型存储值,我会得到(QStringList 或其他)?
其他有用的迹象:Qt 5.14.1 (i386-little_endian-ilp32 shared (dynamic) release build;
由 MSVC 2017)在 “Windows”操作系统:Windows 8.1 版本 6.3 (Build 9600) [winnt 版本 6.3.9600]
架构:x86_64;
感谢您的帮助!
【问题讨论】:
编译和执行程序后没有任何错误说明告诉我它崩溃了。知道为什么会这样吗?您必须使用调试器来解决这个问题。 检查过了。出现分段错误。修复了它,在检查返回值时,它只给了我列表的第一个值,而不是我程序中的所有值。有什么进一步的建议吗?为了清楚起见,我使用以下命令来查找返回值:Etudiants->exec(QLatin1String("SELECT nom FROM Auteurs WHERE nom is not NULL")); Etudiants->next(); qDebug()<<Etudiants->value(0);
在 DB 浏览器中使用 SELECT nom FROM Auteurs WHERE nom is not NULL
返回我的所有值,在我的情况下为 5,因为当前表中存储了 5 条记录。
您确定Etudiants
已正确初始化吗?为什么它是一个指针?堆栈上的 QSqlQuery 非常好。
是的,它确实已正确初始化。它是一个指针,因为我也在其他方法中使用它
【参考方案1】:
好的,我自己找到了解决方案。
执行Etudiants->exec(QLatin1String("SELECT nom FROM Auteurs WHERE nom is not NULL"));
后我所要做的就是用Etudiants->next();
循环,每次我都执行Etudiants->value(0).toString();
,我可以简单地将其存储在QStringList 中。
【讨论】:
以上是关于如何在 QT C++ 中从表的列中获取 SQL 中的所有值的主要内容,如果未能解决你的问题,请参考以下文章