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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在QT中用 QSqlQuery query;查询, 第一次 query.exec();结果是对的,可是第二次执行的时候读的数据是错的相关的知识,希望对你有一定的参考价值。

QSqlQuery query;
query.exec(“仅仅是查询语句“);
。。。输出第一次结果
query.exec(“仅仅是查询语句“);
。。。输出第二次结果
发现结果不一样。。为什么啊?大虾帮帮忙,查了好久了。。不懂。。。

参考技术A QSqlQuery query; 这句话后面跟上query.next(),然后再执行查询本回答被提问者采纳 参考技术B 第三次再试一下看看

QSqlQuery如何获取计数值?

【中文标题】QSqlQuery如何获取计数值?【英文标题】:QSqlQuery how to get value of a count? 【发布时间】:2014-11-20 06:01:48 【问题描述】:

我有一个查询,它只是根据某些条件获取表的计数,例如:

QSqlQuery query("SELECT COUNT(*) FROM some_table WHERE some_value = :something");
query.bindValue(":something", "something");

我的问题是我如何得到这个结果,显然这是你会使用的地方

query.value(int);
query.value(QString);

但是文档说不应该使用 int 索引一,因为我们不知道索引是什么并且我不能使用字符串一,因为没有字段可以定义为我想要的结果。所以假设我说的是正确的,我怎么能从这个查询中将计数整数值放入一个 int 变量中

干杯

【问题讨论】:

【参考方案1】:

为字段计数创建一个别名。像这样:

QSqlQuery query("SELECT COUNT(*) CNT FROM some_table WHERE some_value = :something");

然后按名称查询CNT

【讨论】:

当我这样做时我得到QSqlQuery::value: not positioned on a valid record 你打电话给query.exec()query.first() 执行了查询是的,但没有放在第一位,现在试试 谢谢 :),读到 first() 将把自己定位在第一个完全有意义的有效记录上 可能会更改该变量名,但不想打错字!【参考方案2】:

你也可以使用:Query.next(); Query.value(0).toInt();

对于这个消息:QSqlQuery::value: 未定位在有效记录上 您应该这样做:Query.next(); 将指针更改为第一条记录!

【讨论】:

以上是关于在QT中用 QSqlQuery query;查询, 第一次 query.exec();结果是对的,可是第二次执行的时候读的数据是错的的主要内容,如果未能解决你的问题,请参考以下文章

qt : QSqlQuery 返回 QVariant 的向量

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

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

Qt数据库- 执行SQL语句

Qt中我想用QsqlQuery来修改数据库中的内容,为啥不能实现?求解,以下是代码

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