• 7793阅读
  • 4回复

利用QSqlQuery如何返回结果集的行数? [复制链接]

上一主题 下一主题
离线zww_9107
 

只看楼主 倒序阅读 楼主  发表于: 2013-09-05
使用下面这个写法可以获取到行数,但是QTableWidget中只显示query.last()的结果。      
if(db.driver()->hasFeature(QSqlDriver::QuerySize))          
rowCount = query.size();      
else        
{          
query.last();          
rowCount = query.at() + 1;        
}
如果用 int rowCount = 0;
   while(query.next())
     rowcount++;
   while(query.next())
{ //...向QTableWidget插入数据
}
会提示query需要释放之后才能再次使用。无奈只能用2个query来做。
没有人知道这种问题比较好的解决办法?谢谢
离线bingyifeng

只看该作者 1楼 发表于: 2013-09-06
处理顺序颠倒下。

TableWidget,一开始不设置总数也可以的。 上来先设置行数为0 。
然后

   while(query.next())
{ //...向QTableWidget插入数据
}

这个时候行数也可以取到了。
<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
离线bingyifeng

只看该作者 2楼 发表于: 2013-09-06
另外,如果你的query 不是forwary only的话

使用select 之后, numRowsAffected 接口 也是可以取到总数的。
ps:本人用的是sql server)

再另外,根据你自身的数据库提供的功能,
使用存储过程可以在不取数据的情况下,提前拿到总数的(sql server中可以的,其他数据库不熟悉)
<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
离线angelus

只看该作者 3楼 发表于: 2013-09-24
query.size();      
是需要数据库支持的,如果不支持,就只能用很搓的方法获取!
离线XChinux

只看该作者 4楼 发表于: 2013-09-29
select count(*) 一下吧,精准,通用。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个