这可能是一个愚蠢的问题,但我找不到答案。
我第一次使用Classic ASP,尝试重新格式化代码以防止SQL注入。我有格式和诸如此类的更改(这里不是问题),但其中一个文件是“通用的”。它获取传入的sproc名称和参数,并将SQL语句构造为一个字符串。它被大约50多个其他文件调用。由于最初使用的是SQL语句字符串,并且由于它是“通用化”的,因此没有参数名称可以放入我的CreateParameter方法中。是否有可能创建一个没有名字的参数? (即“@myParameterName”)如果没有,是否还有其他方法来实现我想要做的事情?
Set cnnSQLServer = Server.CreateObject("ADODB.Connection")
cnnSQLServer.Open Application("xyz_ConnectionString")
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cnnSQLServer
cmd.CommandType = adCmdStoredProc
Set param1 = cmd.CreateParameter("@MyParameterName", adVarChar, adParamInput, 100, myValueToPass)
cmd.Parameters.Append(param1)
Set rstData = cmd.Execute
谢谢!
答案 0 :(得分:1)
将经典ADO与SQL Server OLEDB提供程序一起使用时,ADODB.Command
始终按位置将参数传递给存储过程。参数名称即使提供也会被忽略,它们仅用作Command
的内部Parameters
集合中的键。现在ADO.Net就不同了。