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笔记:数据库总结(二)之SQL模型类-QSqlQueryModel模型

QSqlQueryModel类为SQL的结果集提供了一个只读的数据模型,下面我们先利用这个类进行一个最简单的操作. 常用函数 void QSqlQueryModel::setQuery ("SQL...
  • vloong
  • vloong
  • 2013年07月01日 09:10
  • 392

详细介绍Qt数据库QSqlQueryModel的实例操作

Qt数据库 QSqlQueryModel实例操作上篇是本文要介绍内容中一节,分为上下篇。在上一篇的最后我们说到,Qt中使用了自己的机制来避免使用SQL语句,它为我们提供了更简单的数据库操作和数据显示模...
  • dsg333
  • dsg333
  • 2013年07月28日 15:24
  • 532

Qt数据库 QSqlQueryModel实例操作

Qt数据库 QSqlTableModel实例操作是本文所介绍的内容,我们先来看内容。在上一篇我们讲到只读的QSqlQueryModel也可以使其可编辑,但是很麻烦。Qt提供了操作单表的QSqlTabl...
  • zzfzzf68
  • zzfzzf68
  • 2014年04月18日 23:22
  • 12894

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

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

Qt数据库 QSqlQueryModel实例操作

Qt数据库 QSqlTableModel实例操作是本文所介绍的内容,我们先来看内容。在上一篇我们讲到只读的QSqlQueryModel也可以使其可编辑,但是很麻烦。Qt提供了操作单表的QSqlTabl...

Qt数据库 QSqlQueryModel实例操作

Qt数据库 QSqlTableModel实例操作是本文所介绍的内容,我们先来看内容。在上一篇我们讲到只读的QSqlQueryModel也可以使其可编辑,但是很麻烦。Qt提供了操作单表的QSqlTabl...

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

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

Qt 数据库模型(QSqlQueryModel,QSqlTableModel)获取模型中的所有数据

数据模型默认不是显示所有数据 最近使用QTableView结合QSqlQueryModel以及QSqlTableModel在写很多报表,中间产生了一系列出乎意料的现象。其中之一就是QSqlQueryM...

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

QSqlQueryModel类为SQL的结果集提供了一个只读的数据模型,下面我们先利用这个类进行一个最简单的操作. 常用函数 void QSqlQueryModel::setQuery (...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT中使用QSqlQueryModel读取数据库问题
举报原因:
原因补充:

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