QT中使用QSqlQueryModel读取数据库问题

原创 2013年12月05日 09:12:00

在使用QT的QSqlQueryModel操作SQLite数据库的时候,遇到了查询只能返回并显示256个结果的问题,如图1:

图1

而显然通常SQLite数据库中不止只有256个数据,像在我这个程序中,我的SQLite数据库中存了935个数据,如图2:

图2

源代码如下:

bool HydrologicDataDisplay::updataquerymodel()

{

         QSqlQueryModel *Model = new QSqlQueryModel;

         QString selectfromtable = "select time,gaugingstation,stage,flow,windspeed,visibility,temperature from hydrologicdata";         Model->setQuery(selectfromtable);

        

         Model->setHeaderData(0,Qt::Horizontal,tr("日期"));

         Model->setHeaderData(1,Qt::Horizontal,tr("测站"));

         Model->setHeaderData(2,Qt::Horizontal,tr("水位(m)"));

         Model->setHeaderData(3,Qt::Horizontal,tr("流量(m3/s)"));

         Model->setHeaderData(4,Qt::Horizontal,tr("风速"));

         Model->setHeaderData(5,Qt::Horizontal,tr("能见度"));

         Model->setHeaderData(6,Qt::Horizontal,tr("温度()"));

         tableView->setModel(Model);

                   return true;

}

然而,错误就隐藏在疏忽大意之间,QT的QSqlQueryModel每次最多只能缓存查询结果的256条。即,如果查询语句操作的结果超过256条了,也只能返回256。这样就必然会导致在后续操作中的错误。因此,为了在程序的运行结果中显示更多的数据,我们需要做如下调整,在操作结果前先通过fetchmore()来获取所有的结果,更新代码如下:

bool HydrologicDataDisplay::updataquerymodel()

{

         QSqlQueryModel *Model = new QSqlQueryModel;

         QString selectfromtable = "select time,gaugingstation,stage,flow,windspeed,visibility,temperature from hydrologicdata";

         Model->setQuery(selectfromtable);

         Model->setHeaderData(0,Qt::Horizontal,tr("日期"));

         Model->setHeaderData(1,Qt::Horizontal,tr("测站"));

         Model->setHeaderData(2,Qt::Horizontal,tr("水位(m)"));

         Model->setHeaderData(3,Qt::Horizontal,tr("流量(m3/s)"));

         Model->setHeaderData(4,Qt::Horizontal,tr("风速"));

         Model->setHeaderData(5,Qt::Horizontal,tr("能见度"));

         Model->setHeaderData(6,Qt::Horizontal,tr("温度()"));

         while(Model->canFetchMore()) 

  { 

      Model->fetchMore(); 

  }

         tableView->setModel(Model);

         QTableView::resizeRowsToContents();

         return true;

}

 

改正后的结果如图3:

                                                                Bonaz

                                                                于华北电力大学(北京)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

QT的QSqlQuery与QSqlQueryModel读取数据库问题

在使用QT的QSqlQueryModel操作SQLite数据库的时候,遇到了查询只能返回256个结果的问题,经过差不多大半天的时候才找到解决方法。既然说到数据库操作了,就把一些基础性的东西也都贴出来,...

Qt数据库 QSqlQueryModel实例操作 上下篇

http://mobile.51cto.com/symbian-271557.htm Qt数据库 QSqlQueryModel实例操作 上篇是本文要介绍内容中一节,分为上下篇。在上一...

QT笔记:数据库总结(二)之SQL模型类-QSqlQueryModel模型

QSqlQueryModel类为SQL的结果集提供了一个只读的数据模型,下面我们先利用这个类进行一个最简单的操作. 常用函数 void QSqlQueryModel::setQuery ("SQL...

QT笔记:数据库总结(二)之SQL模型类-QSqlQueryModel模型

http://blog.csdn.net/reborntercel/article/details/7000220

QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据

QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. ...

QT QSqlQuery QSqlQueryModel

SQL执行操作 QSqlQuery提供了对数据库记录的Select、Insert、Update、Delete操作。 SELECT操作: QSqlQuery query; query.e...

[Qt creator+Linux]mysql数据库使用问题:mysql driver not loaded

[Qt creator+Linux]mysql数据库使用问题:mysql driver not loaded

使用Qt从excel读取数据至数据库

一、前言 本文介绍了一种在Qt平台将excel表格的数据读取至数据库QSQLite的方法。思路为:先将excel表格转为csv文件,若原表格中存在着中文,还需将csv的编码格式转为UTF-8,接着由Q...

Qt操作数据库中出现的问题

最近在用Qt编写一个小的项目,前几今天都好好的,数据库一点问题都没有,今天不知道怎么了,老是出现乱码,怎么改都不行,想了半天自己也没有改什么不该改的地方啊,纠结了一天,哎!自己昨天的程序还都能运行,没...

关于Qt显示Jpg图片程序的移植和数据库的setfilter函数的问题

在数据库中存有一些图片,将图片读取到界面显示,写好的exe程序到了没装Qt的机子上就无法显示图片了。 -------------------- "值得注意的是,在查询时应该明确指明那个表的数据信息...
  • LynFam
  • LynFam
  • 2011-02-22 22:31
  • 4209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)