【发布时间】:2014-03-20 13:59:55
【问题描述】:
这可能是一个愚蠢的问题,但我找不到答案。
我是第一次使用 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
谢谢!
【问题讨论】:
-
将经典 ADO 与 SQL Server OLEDB 提供程序一起使用时,
ADODB.Command始终按位置将参数传递给存储过程。即使提供了参数名称也会被忽略,它们仅用作Command的内部Parameters集合中的键。现在在 ADO.Net 中有所不同。 -
你应该“回答”这个问题。这样我就可以检查它是否正确。谢谢你的信息!!!
标签: sql stored-procedures asp-classic vb6