我应该在将值发送到参数化查询之前逃脱单引号吗?

时间:2015-09-29 16:07:24

标签: sql-server vbscript adodb

当我使用参数化查询(例如,使用ADODB.Command对象)时,我被告知(或在某处读取),所有转义都在Command对象内或数据库引擎内部处理。

这是真的吗?

我的命令代码示例如下 - 与创建的第一个参数一样传递原始参数是否安全,或者是否应该像第二个参数一样进行转义?

我的特定环境是Windows 2008(或更新版本)和SQL Server 2008(或更新版本)上的vbscript。

Dim oSproc : Set oSproc = CreateObject("ADODB.Command") 
With oSproc
    .ActiveConnection = oConn
    .CommandText = "mysp_SPNAME"
    .CommandType = adCmdStoredProc 
    With .Parameters
        .Append oSproc.CreateParameter("@IN_str1", adVarChar, adParamInput, 255, myStr)
        .Append oSproc.CreateParameter("@IN_str2", adVarChar, adParamInput, 255, replace(myStr, "'", "''"))
    End With 
    .Execute 
End With 

1 个答案:

答案 0 :(得分:2)

它的真实;参数化是在Command对象与Parameter对象结合使用时完成的。

您可以通过传递"'"并观察没有错误,或者通过运行跟踪并查看sp_executeSQL调用来验证这一点。