• 7070阅读
  • 7回复

[提问]qt执行sql存储过程后如何返回影响的行数? [复制链接]

上一主题 下一主题
离线bingcaihuang
 

只看楼主 倒序阅读 楼主  发表于: 2011-09-05
RT,求助,qt执行sql存储过程后如何返回影响的行数?
离线wxj120bw

只看该作者 1楼 发表于: 2011-09-05
回 楼主(bingcaihuang) 的帖子
这里的行数是影响记录的总数还是影响的第几个记录
离线bingcaihuang

只看该作者 2楼 发表于: 2011-09-05
回 1楼(wxj120bw) 的帖子
影响的记录数啊,执行一般select查询是可以正确返回的,但执行存储过程若返回数据集,则不能正确获取行数,只返回-1,现在只能执行query.exec()后,执行query.last(),int row = query.at() + 1,但速度会很慢
离线wxj120bw

只看该作者 3楼 发表于: 2011-09-05
回 2楼(bingcaihuang) 的帖子
你的存储过程应该返回数据集 但只返回-1 是什么错误 你知道吗
离线abcdlcq

只看该作者 4楼 发表于: 2011-09-06
执行query.exec()返回true,说明执行成功,再调用int QSqlQuery::numRowsAffected ()获取sql语句执行影响的行数。
Returns the number of rows affected by the result's SQL statement, or -1 if it cannot be determined. Note that for SELECT statements, the value is undefined; use size() instead. If the query is not active, -1 is returned.
离线bingcaihuang

只看该作者 5楼 发表于: 2011-09-06
回 3楼(wxj120bw) 的帖子
执行存储过程后,query.exec()是返回true的,而且query.next()也返回true,取值也是能取到值的,但query().numRowsAffected()就是返回-1,如果执行普通的select查询numRowsAffected()是能正确返回行数的,不信你可以验证一下
离线bingcaihuang

只看该作者 6楼 发表于: 2011-09-06
回 4楼(abcdlcq) 的帖子
int QSqlQuery::numRowsAffected ()对存储过程返回的结果集不起作用
离线bingcaihuang

只看该作者 7楼 发表于: 2011-09-07
自己顶一下,测试过后发现,如果存储过程既返回数据集又返回行数作为输出参数的,qt里面是接收不到返回行数的,只能接收其一,版主在不,版主,这问题怎么解决啊……
快速回复
限100 字节
 
上一个 下一个