当我通过MS Access执行SQL查询时,我得到了返回的结果,但如果我在VBScript中执行相同的查询,则我的RecordCount为-1。我不知道这是否是连接错误。我没有得到任何东西,但很明显SQL确实在Access中返回结果。我在下面的连接代码中获得0次点击。
sqlquery = "SELECT * FROM i2cner WHERE Authors Like 'Ish*';"
dim conn
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "d:/inetpub/ga/sarina/i2cner/contacts2000.mdb"
set r = Server.CreateObject("ADODB.recordset")
if r.state = 1 then r.close
r.Open sqlquery, conn
hits = r.RecordCount
session("hits") = hits
set session("r") = r
答案 0 :(得分:1)
如果您只需要记录计数,那么您可以给出
sqlquery = "SELECT COUNT(*) AS cnt FROM i2cner WHERE Authors LIKE 'Ish%'"
请注意,SQL字符串中没有;
。
当您必须检索计数时,您可以
hits = r.fields("cnt")
OR
hits = r("cnt")
Recordcount
有时具有欺骗性,所以我不会太多使用它。我每次都使用上述方法。
答案 1 :(得分:1)
r.CursorLocation = 3 'adUseClient. Thanks @HansUp
在使用r.Open
之前添加上述行
CursorLocation
为adUseServer
。因此,在您前进时会获取记录(类似于.net datareader)。将其更改为adUseClient
会在客户端显示所有记录,这将提供正确的RecordCount
。
编辑:此外,在会话中存储记录集也没有意义。并且,一旦使用完毕,您应该关闭连接 -
conn.Close
set conn = Nothing
在会话中存储记录集的需要是什么?