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到底什么有效?请使用@
让给出正确答案的用户发布新答案,就像我在这里所做的那样: