51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2315|回复: 4
打印 上一主题 下一主题

[原创] 如何解决返回数据库查询纪录条数的总结

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-9-28 11:15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家在使用recordcount来实现返回纪录数的时候会发现返回值是-1或者1的时候,很奇怪,经过研究总结了以下几种获得纪录条数的方法:


方法一
Set   oRs   =   Server.CreateObject("ADODB.RecordSet")   
  oRs.Open   sSql,   oConn,   1,   1   
  来读数据.
仅检索数据:rs.open   SQL,conn,1   
  更新数据:rs.open   SQL,conn,2,2,1

方法二   
用Select   Count(*)   As   RecordCount   From   [table]   
  oRs("RecordCount")来获取   
方法三
用Do   While   Not   oRs.Eof   
  RecordCount   =   RecordCount   +   1   
  Loop


方法一原理如下:
通常人们使用以下两种方法来执行SQL语句:     
  Set   Rs=Conn.Execute(SqlStr)     
  和     
  Set   Rs=Server.CreateObject(“ADODB.RecordSet“)     
  Rs.Open   SqlStr,Conn,CursorType,LockType     
   
  (RecordSet对象方法请看这里)     
   
   
  由于默认的记录集游标是服务器游标,     
  Rs.CursorLocation   =   adUseServer     
  所以返回Rs.RecordCount=-1,     
  应该把服务器游标改为客户端游标,     
  Rs.CursorLocation   =   adUseClient     
  Rs.Open   SqlStr,Conn,CursorType,LockType     
   
  rs.cursortype     
   
  光标类型   recordcount   属性     
  ---------------------------------------------     
  ForwardOnly   0(默认)   返回-1     
  Keyset   1   正确的记录数     
  Dynamic   2   -1或不正确的记录数,依数据源而定     
  Static   3   正确的记录数
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-4-15 10:59:51 | 只看该作者
好贴
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-4-15 13:26:01 | 只看该作者
不错,学习了,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-4-15 14:04:01 | 只看该作者
楼主,利用command.Execute得到的结果集和通过RecordSet.open 得到的结果集中, 游标的属性有什么区别吗?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-2-16 18:18:52 | 只看该作者
学习了.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-25 23:13 , Processed in 0.079899 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表