Asp classic 为什么我的记录计数总是-1?

Asp classic 为什么我的记录计数总是-1?,asp-classic,Asp Classic,我想运行一个SQL查询,看看数据库中是否已经有ID数据 我曾经做到过 但它不起作用。数据库确实有行,当我运行确切的SQL查询时,它会显示几个结果。但是RecordCount似乎总是-1。即使在下面的IF子句中也无法识别这一点。这是我的密码: sqlCommand2 = "SELECT * FROM database " &_ "WHERE row = 'whatever';" SET objRS2 = objConn.E

我想运行一个SQL查询,看看数据库中是否已经有ID数据

我曾经做到过

但它不起作用。数据库确实有行,当我运行确切的SQL查询时,它会显示几个结果。但是
RecordCount
似乎总是
-1
。即使在下面的
IF
子句中也无法识别这一点。这是我的密码:

sqlCommand2 =   "SELECT * FROM database " &_
                "WHERE row = 'whatever';"
                SET objRS2 = objConn.Execute(sqlCommand2)

                Wscript.Echo "RecordCount: " & objRS2.RecordCount 'ALWAYS returns -1

                IF objRS2.RecordCount > 0 THEN

为什么RecordCount总是设置为-1?尝试将光标类型更改为adOpenStatic。您可以使用下面的功能

*请注意,您需要在下面包含连接字符串

  Function RS(strSQL)
     Dim oConn, oRs 
     Set oConn  = Server.CreateObject("ADODB.Connection")
     oConn.CommandTimeout = 1800
     oConn.Open("[ConnectionStringValueGoesHere]")

     Set oRs = Server.CreateObject("ADODB.Recordset")
     oRs.CursorLocation = 3 
     oRS.Open strSQL, oConn, 3, 4
     oRS.ActiveConnection = Nothing
     oConn.Close
     Set oConn = Nothing

     Set executeSQLreturnRS = oRs
 End Function
因此,改变这一行:

SET objRS2 = objConn.Execute(sqlCommand2)
致:


我现在的解决方案是执行一个
do WHILE NOT objRS2.EOF Counter up
子句,该子句有效。但我只是想了解为什么我的记录计数总是-1。如果在
oRs.CursorLocation=3
oRs行中使用仅向前的游标@trollwut,就会发生这种情况。打开strSQL,oConn,3,4
更改游标类型,这是John建议的,也是它不起作用的原因,没有必要改用断开连接的记录集。卢克·福特,你能改进一下你的答案吗?(或者我应该说……哈里森·天行者?啊啊啊啊啊啊啊……我需要周末。)@Trollwut-LOL,哈里森·天行者是新来的。我已经更新了答案以反映光标类型的更改。谢谢。谢谢,伙计,回答被采纳了!
SET objRS2 = RS(sqlCommand2)