网站制作学习网ASP→正文:关于RecordCount等-1的问题
字体:

关于RecordCount等-1的问题

ASP 2007/12/28 15:57:48  点击:不统计

1

mssql--asp的rs.recordcount值为负1



只有以ADO方式调用数据库才有recordcount这一说,用存储过程需要用select count(*) from table_name自行统计

? 这个说的不对, 存储过程也可以用 ado 来打开,比如:rs.open "exec SomeProc", conn, 1, 3我处理解决的方法是rs.open sql,conn,1,1解决此问题



2

通常人们使用以下两种方法来执行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 正确的记录数



伊图教程网[www.etoow.com]

http://www.etoow.com/html/2007-12/1198296498.html

Dynamic 2 -1或不正确的记录数,依数据源而定



Static 3 正确的记录数



所以Rs.CursorLocation = 3

可用recordset.support("属性名")进行测试是否支持该属性。



3

Set oRs = Server.CreateObject("ADODB.RecordSet")

oRs.Open sSql, oConn, 1, 1

来读数据,



要不就用Select Count(*) As RecordCount From [table]

oRs("RecordCount")来获取



要不就用Do While Not oRs.Eof

RecordCount = RecordCount + 1

Loop





4我的数据库是这么连接的:

strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("bbs.mdb")

set conn = server.createobject("adodb.connection")

conn.open strconn

sql="SELECT * FROM space "

set rs=createobject("adodb.recordset")

rs.open sql,conn,1,1



可是的确有记录集返回

还可以显示



·上一篇:ASP获得代码中第一张图片地址 >>    ·下一篇:常用Response对象的使用详解 >>
推荐文章
最新文章