Qt关于使用QSqlQuary::size()这个函数值返回是-1
QSqlQuary::size( )
今天做项目的时候,用Qt连接Oracle数据库,前面都是连接成功,但是用SQL语句去操作数据库的时候,发现老是读不到内容,卡了好久。
QSqlQuery RuleQuery;
RuleQuery = QSqlQuery(OracleCon);
qDebug() << command; //command 是SQL语句
if (!RuleQuery.exec(command)) {
qDebug() << "exec error!";
}
qDebug() << "RuleQuery.size() : " << RuleQuery.size();
for( int i=0;i<=RuleQuery.size();i++){
recvData.push_back(RuleQuery.value(0).toInt());
qDebug() << "RuleQuery.value(0) : " << RuleQuery.value(0);
}
这里的`RuleQuery.size()`一直是-1,导致我一直以为数据库没有连接上
本人又是数据库小白不知道其他的检验方法,还去本地的Oracle客户端试了一下SQL语句是否能执行,发现也能执行,真是纳了闷了。
然后我在别的博客上看到了另外的一种方法,
QSqlQuery RuleQuery;
RuleQuery = QSqlQuery(OracleCon);
qDebug() << command; //command 是SQL语句
if (!RuleQuery.exec(command)) {
qDebug() << "exec error!";
}
qDebug() << "RuleQuery.size() : " << RuleQuery.size();
// 改动的地方在这里,使用了QSqlQuery::next()
while (RuleQuery.next()) {
recvData.push_back(RuleQuery.value(0).toInt());
qDebug() << RuleQuery.value(0).toString();
}
用这种方法,能行!!
于是,本人怀着“在被坑过之后不但要填坑,还要明白坑是怎么来的!”的信条,就开始了找原因的路程。
- 先是在Qt官方文档中查看
QSqlQuary::size( )的文档
大致意思就是说,size()返回结果的大小,如果大小不能确认或者如果数据库不支持报告有关查询大小的信息就返回-1,而且下面还标注了,察看QSqlDriver::hasFeature这个函数,但是本人没有去看 0 . 0(不得不说,Qt的手册真的是写的很好,文字都是比较容易理解的。) - 然后就是百度一通找啊,想找一下
hasFeature的用法,然后想着去bing上用国外版搜搜看有没有(有一说一,国外的网站的技术内容真的要比国内的要多,搜计算机知识还是很多去StackOverflow之类的)
在StackOverflow最终找到了答案…
https://stackoverflow.com/questions/26495049/qsqlquery-size-always-returns-1
使用方法如下:QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
qDebug() << db.driver()->hasFeature(QSqlDriver::QuerySize);
手册上有关于
driver()和hasFeature()以及QSqlQuary::QuerySize的介绍,就不贴出来了。
有的时候还是要认认真真的看手册0.0,或者去国外的网站去搜索内容,国内的内容比较少。
Qt关于使用QSqlQuary::size()这个函数值返回是-1的更多相关文章
- C语言:将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换。-删除指针p所指字符串中的所有空白字符(包括制表符,回车符,换行符)-在带头结点的单向链表中,查找数据域中值为ch的结点,找到后通过函数值返回该结点在链表中所处的顺序号,
//将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换. #include <stdio.h> #include <string.h> void fun ...
- string 中的 length函数 和size函数 返回值问题
string 中的 length函数 和 size函数 的返回值 ( 还有 char [ ] 中 测量字符串的 strlen 函数 ) 应该是 unsigned int 类型的 不可以 和 -1 ...
- qt 总结
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义.例如要使用QApplication类,则需要在程序中添加" #include <QApplication>" ...
- Qt学习--部件深入--烤猪蹄
1,进程条--向用户显示程序的当前状态,向用户提示该任务需要多长时间才能够完成. Qt-ProgressBar创建进程条,QProgressBar,为了使进程条担当起进程指示功能,需要执行定义进程条的 ...
- QT第四天学习
回顾: 1.信号与槽 public slots: //先声明后实现 signals: //只需要声明 connect(sender,SIGNAL(signal()),receiver,SLOT(slo ...
- Qt 学习之路 2(70):进程间通信
Qt 学习之路 2(70):进程间通信 豆子 2013年11月12日 Qt 学习之路 2 16条评论 上一章我们了解了有关进程的基本知识.我们将进程理解为相互独立的正在运行的程序.由于二者是相互独立的 ...
- Elasticsearch——分页查询From&Size VS scroll
Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回.那么,如果要实现分页查询该怎么办呢? 更多内容参考Elasticsearch资料汇总 按照一般的查询 ...
- matlab之round any size rat isscalar ismatrix mean find max
1.round : 四舍五入 例子:a = [-1.9, -0.2, 3.4, 5.6, 7.0, 2.4+3.6i] round(a): [-2 0 3 6 7 2 4] 2.butte ...
- Qt 学习之路 :访问网络(4)
前面几章我们了解了如何使用QNetworkAccessManager 访问网络.在此基础上,我们已经实现了一个简单的查看天气的程序.在这个程序中,我们使用QNetworkAccessManager进行 ...
- Qt仿Android带特效的数字时钟源码分析(滑动,翻页,旋转效果)
这个数字时钟的源码可以在Qt Demo中找到,风格是仿Android的,不过该Demo中含有三种动画效果(鉴于本人未曾用过Android的系统,因此不知道Android的数字时钟是否也含有这三种效果) ...
随机推荐
- Qt/C++视频监控安卓版/多通道显示视频画面/录像存储/视频播放安卓版/ffmpeg安卓
一.前言 随着监控行业的发展,越来越多的用户场景是需要在手机上查看监控,而之前主要的监控系统都是在PC端,毕竟PC端屏幕大,能够看到的画面多,解码性能也强劲.早期的手机估计性能弱鸡,而现在的手机性能不 ...
- SHA256 64 位加密
/// <summary> /// SHA256 64位加密 /// </summary> /// <param name="input">&l ...
- [转]CMake与Make最简单直接的区别
写程序大体步骤为: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执行文件,如.exe. 但如果源文件太多,一个一个编译时就会特别麻烦 ...
- 【Windows】修改虚拟内存位置
问题:系统优化中,希望将pagefile.sys文件(即虚拟内存)移动到其他盘中,在网上查找解决办法,找了很多,按照方法设置完成后,pagefile.sys文件依然存在,后来,找到了一篇文章解决了,现 ...
- MACOS 降级
最近升级了macos 15.2,结果导致外接显示器显示不正常,经常断掉或者黑屏,因此macos进行降级处理: 1. 首先在App Store下载Ventura 系统; 2. 准备一个16G的U盘,然后 ...
- Solution -「POI 2013」LAB-Maze
\(\mathscr{Description}\) Link. 构造一个边平行与坐标轴, 顶点是整点, 相邻边互相垂直, 且逆时针遍历顶点时转向 (向左或向右) 符合给定字符串的不自交多边形. ...
- dubbo源码解析目录-总结列表
一.dubbo架构设计 1.十层架构第一层:service层,接口层,给服务提供者和消费者来实现的.第二层:config层,配置层,主要是对dubbo进行各种配置的.第三层:proxy层,服务代理层, ...
- 分布式配置中心--Apollo
分布式配置中心--Apollo Apollo(阿波罗)是携程开源的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,支持配置热发布并实时推送到应用端,并且具备规范的权限及流程治理等特性,适用 ...
- Delphi XE TVirtualQuery raised exception class ESQLiteError with message 'duplicate column name:dw'
使用Delphi XE7+UniDAC+TVirtualQuery开发的过程中,对已经查询到内存中的数据集TUniQuery组件,再次运用SQL语句进行查询 结果程序运行后提示错误:raised ex ...
- axios请求拦截器和响应拦截器
axios里面可以设置拦截器 ,在请求发送之前做一些事情: 拦截器分[请求拦截器]和[响应拦截器] 参考地址:https://www.jb51.net/article/150014.htm 参考的地址 ...