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 正確的記錄數
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
可是的確有記錄集返回
還可以顯示