如何在 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 中的所有值的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 仅从表中获取并非所有值都是空值的列

如何计算Oracle SQL中从右侧开始的列中有多少个零

从表中复制全名并将名字和姓氏插入新表的单独列中

在单个查询中获取多个 SQL 表的列

如何在 QT[C++] 中从 linux 机器连接 SQL Server 2008 R2?

oracle sql查询以获取没有空格的列值