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

在使用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

                                                                于华北电力大学(北京)

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭