Vbscript 命令对象和记录集在经典asp中的使用

Vbscript 命令对象和记录集在经典asp中的使用,vbscript,asp-classic,Vbscript,Asp Classic,为了使其参数化,我使用了命令对象,以防止注入,在使其参数化后,它无法连接到数据库。 我不确定哪里出了问题 错误:对象关闭时不允许操作 有人能帮我解决这个问题吗 Set dbConn = Server.CreateObject("ADODB.Connection") set RS = server.CreateObject("ADODB.recordset") dbConn.Open Application("SOP_DB_ConnectionSt

为了使其参数化,我使用了命令对象,以防止注入,在使其参数化后,它无法连接到数据库。 我不确定哪里出了问题

错误:对象关闭时不允许操作

有人能帮我解决这个问题吗

Set dbConn = Server.CreateObject("ADODB.Connection")
set RS = server.CreateObject("ADODB.recordset")
dbConn.Open Application("SOP_DB_ConnectionString"), _
Application("SOP_DB_RuntimeUserName"), _
Application("SOP_DB_RuntimePassword")

Set cmdSQL= server.CreateObject("ADODB.command")

sqlStmt = "select * from Parameters where Parameter like ?"

cmdSQL.Activeconnection = dbConn
cmdSQL.CommandText = sqlStmt
cmdSQL.CommandType = adCmdText
cmdSQL.Prepared = True ' only needed if u plan to reuse this command often
cmdSQL.Parameters.Refresh 

strSearch = "%conn%"
Set prmSQL = cmdSQL.CreateParameter("strVal" , adVarChar, adParamInput, 255,strSearch)
cmdSQL.Parameters.Append prmSQL

RS.CursorType = 3' adOpenStatic 

RS.Open cmdSQL,dbConn

if RS.BOF and RS.EOF then ' if no connection found -->GETTING ERROR HERE
    session("ErrorTitle")="the initializing process"    
    session("ErrorText")="Connection failed- Couldn't read SOP parameters from database"
    Response.Redirect "Error.asp"
else ' found record 
    RS.MoveFirst
    Do while not RS.EOF
        session(trim(RS.Fields("Parameter").value)) =       Trim(RS.Fields("Val").value)
        RS.MoveNext
    Loop    
end if 
Rs.close

DB是什么?SQL Server、MySQL、Oracle或天堂禁止MS访问??与
类似的
模式匹配通配符可以不同,例如MS Access使用
*
而不是
%
。感谢Lankymart的回复。DB是SQL Server您是否尝试过从SSMS中的参数“%conn%”
中运行查询
select*from Parameters它是否返回任何内容?如果没有问题,如果没有找到与查询匹配的记录,则
ADODB.Recordset
将以关闭状态返回,您可以使用
如果RS.state=adStateClosed,则检查此问题。尝试两件事:1。使用
[]
转义对象名称,
参数
位于此列表中的“未来关键字”列表中:。因此,您的命令文本变为:
select*from[Parameters],其中[Parameter]类似于?
。2.将
strVal
更改为
@strVal
。这是常见的SQL Server语法。你也可以查看以下帖子:@Praveen_07到底什么有效?请使用
@
让给出正确答案的用户发布新答案,就像我在这里所做的那样: