• 5861阅读
  • 3回复

qsqltablemodel+qtableview显示sqlserver数据,数据已经查询完了,怎么还不停查询数据库? [复制链接]

上一主题 下一主题
离线zhangdream
 

只看楼主 倒序阅读 楼主  发表于: 2013-12-18
使用QSqlTableModel 和QTableView显示sqlserver中的数据,call_callpara表只有123行,通过sqlserver的事件探测器监控发现所有数据返回后只要程序还在最前端就会不停从游标中取数据。这是什么问题

代码如下:
    QSqlTableModel *model = new QSqlTableModel;
    model->setTable("call_callpara");
    model->select();
    ui->tableView->setModel(model);

sqlserver的事件探测器监控到的语句如下:
首先是打开游标
declare @P1 int
set @P1=180150000
declare @P2 int
set @P2=8
declare @P3 int
set @P3=1
declare @P4 int
set @P4=123
exec sp_cursoropen @P1 output, N'select * from call_callpara', @P2 output, @P3 output, @P4 output
select @P1, @P2, @P3, @P4

后面就是不停从游标取数据
离线gqxsunshine

只看该作者 1楼 发表于: 2013-12-18
我也是这样的情况,不知道什么原因
离线XChinux

只看该作者 2楼 发表于: 2013-12-20
不要用QSqlTableModel,既然数据不多,那你直接QSqlQuery查出来数据,然后扔给QStandardItemModel就行了.

另外,快捷方式,可参考tianchi TcDataAccess, TcVariantMapTableModel, TcSortPaginationTableView,
https://github.com/qtcn/tianchi/blob/master/include/tianchi/sql/tcdataaccess.h
https://github.com/qtcn/tianchi/blob/master/include/tianchi/core/tcvariantmaptablemodel.h
https://github.com/qtcn/tianchi/blob/master/include/tianchi/gui/tcsortpaginationtableview.h
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线whhfly2003

只看该作者 3楼 发表于: 2014-09-16
虽然是很早的帖子,我也发现有这个问题,特别实在网络有延迟的时候就会非常明显,访问model里面的数据就会造成卡顿。试用sqlquery 配合setForwardOnly 就不会有问题,非常快。
不知道大家有什么好的解决办法,难道大家都不用sqltablemodel来访问数据库吗?我感觉还是很方便的(特别是查询,保存,配合QDataWidgetMapper)。希望各位大大能够给出建议。谢谢
本帖提到的人: @XChinux
快速回复
限100 字节
 
上一个 下一个