|
源代码网推荐
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 正确的记录数 Dynamic 2 -1或不正确的记录数,依数据源而定 Static 3 正确的记录数
所以Rs.CursorLocation = 3 可用recordset.support("属性名")进行测试是否支持该属性。 http://www.dwww.cn/new/20051128112149636.html
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
可是的确有记录集返回 还可以显示
源代码网供稿. |