关闭

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

标签: QT数据库数据sqlite
649人阅读 评论(0) 收藏 举报

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

                                                                于华北电力大学(北京)

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:669次
    • 积分:16
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档