QT中使用QSqlQueryModel读取数据库问题
作者:网络转载 发布时间:[ 2013/12/10 10:50:31 ] 推荐标签:
源代码如下:
|
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;
}
|
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
在测试数据库性能时,需要注意哪些方面的内容?测试管理工具TC数据库报错的原因有哪些?怎么解决?数据库的三大范式以及五大约束编程常用的几种时间戳转换(java .net 数据库)优化mysql数据库的几个步骤数据库并行读取和写入之Python实现深入理解数据库(DB2)缓冲池(BufferPool)国内三大云数据库测试对比预警即预防:6大常见数据库安全漏洞数据库规划、设计与管理数据库-事务的概念SQL Server修改数据库物理文件存在位置使用PHP与SQL搭建可搜索的加密数据库用Python写一个NoSQL数据库详述 SQL 中的数据库操作详述 SQL 中的数据库操作Java面试准备:数据库MySQL性能优化

sales@spasvo.com