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("屬性名")進行測試是否支援該屬性。
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
可是的確有記錄集回傳還可以顯示