qt QSqlQuery 查询字符串类型字段,当不存在的时候,返回"0",如何解决请高手赐教?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt QSqlQuery 查询字符串类型字段,当不存在的时候,返回"0",如何解决请高手赐教?相关的知识,希望对你有一定的参考价值。

QString aa = query.value("传感器范围").toString();
当这个字段不存在的时候,为什么返回"0"呢?能否返回“”也就是空字符串呢?

1 。 看下数据库你设置的默认值,可以设置为“”
或者
2. 返回“0”,加一个包装方法再做一次判断追问

当数据库字段不存在,没法设置默认值啊。
用的地方很多的时候,判断就显得很臃肿,qt有提供这种默认值吗?

参考技术A 我特意试了试,当字段为空的时候返回值是"",肯定是你写的问题,不是qt的问题,你检查检查。本回答被提问者采纳

qt : QSqlQuery 返回 QVariant 的向量

【中文标题】qt : QSqlQuery 返回 QVariant 的向量【英文标题】:qt : QSqlQuery returns vector of QVariant 【发布时间】:2010-12-20 12:32:46 【问题描述】:

我正在使用这样的 QSqlQuery 类查询一个 sqlite 数据库:

 QSqlQuery query("SELECT country FROM artist");
 while (query.next()) 
     QString country = query.value(0).toString();
     doSomething(country);
 

有没有办法直接从 QSqlLite 类中获取 QVariants 的向量?像这样:

 QSqlQuery query("SELECT country FROM artist");
 while (query.next()) 
     std::vector< QVariant > allFields;
     allFields.push_back( query.value(0) );
     allFields.push_back( query.value(1) );
     allFields.push_back( query.value(2) );
     doSomething(allFields);
 

【问题讨论】:

【参考方案1】:

使用 boundValues:

QList<QVariant> allFields = query.boundValues().values();

P.S:我不会在 Qt 中使用标准容器。 Qt 容器有一个主要优势——隐式共享。我建议使用 QList 而不是 std::vector

【讨论】:

看起来不错,但是在调用 boundValues 之前我需要调用 bindValue() 吗? boundValues 是否会保存查询的当前结果(在调用 query.next() 之后)?

以上是关于qt QSqlQuery 查询字符串类型字段,当不存在的时候,返回"0",如何解决请高手赐教?的主要内容,如果未能解决你的问题,请参考以下文章

QT哪里设置QSqlquery.exe()的查询超时时间的

qt : QSqlQuery 返回 QVariant 的向量

42.QT-QSqlQuery类操作SQLite数据库(创建查询删除修改)详解

Qt SQL:QSqlQuery

sqlite中以GBK存的中文,在Linux环境的QT开发中QSqlQuery查询出来是乱码,需要如何转换,具体如何操作,谢

在QT中用 QSqlQuery query;查询, 第一次 query.exec();结果是对的,可是第二次执行的时候读的数据是错的