jiangyuetian 发表于 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      
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   正确的记录数

getfly 发表于 2008-4-15 10:59:51

好贴

dreamever 发表于 2008-4-15 13:26:01

不错,学习了,呵呵

getfly 发表于 2008-4-15 14:04:01

楼主,利用command.Execute得到的结果集和通过RecordSet.open 得到的结果集中, 游标的属性有什么区别吗?

angelia_liu 发表于 2009-2-16 18:18:52

学习了.
页: [1]
查看完整版本: 如何解决返回数据库查询纪录条数的总结