1
mssql--asp の rs.recordcount 値は負の 1 です。
データベースが ADO モードで呼び出された場合にのみ、レコード数が存在します。ストアド プロシージャを使用する場合は、select count(*) from table_name を使用して自分でカウントする必要があります。 。
? これは間違いです。ストアド プロシージャは、例: rs.open "exec SomeProc", conn, 1, 3 で開くこともできます。この問題を解決するには、rs.open sql,conn,1,1 を使用します。
2
通常、SQL ステートメントを実行するには次の 2 つの方法が使用されます。
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
カーソル タイプ レコードカウント属性
--------------------------------------
ForwardOnly 0 (デフォルト) は -1 を返します
キーセット 1 の正しいレコード数
データ ソースに応じて、動的 2 -1 または不正確なレコード数
静的 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 を取得または使用します。
レコード数 = レコード数 + 1
ループ
4私のデータベースは次のように接続されています:
strconn = "DRIVER=Microsoft Access ドライバー (*.mdb);DBQ=" & Server.MapPath("bbs.mdb")
set conn =server.createobject("adodb.connection")
conn.open strconn
sql="SELECT * FROM スペース "
set rs=createobject("adodb.recordset")
rs.open sql,conn,1,1
ですが、確かにレコードセットが返されており、表示できます