在asp

时间:2015-09-07 15:37:11

标签: asp.net sql-server parameterized-query

我是参数化SQL的新手。我在.asp页面中有一个查询,它从表单中获取一个或多个客户端名称。它们保存在名为clientArr的数组中,然后作为参数传递给SQL Server。我正在逃避'as'',但这似乎并没有起作用。如果我使用 McDonald's 等客户端名称运行查询,则不会返回任何结果。

clientArr(y) = Replace(clientArr(y),"'","''"

...

if qsClient > "" Then
    dim booComma
    booComma = false
    if mySQLwhere > "" Then
        mySQLwhere = mySQLwhere& " AND "
    End if
    mySQLwhere = mySQLwhere & " (p.client IN ( "
    for y = 0 to Ubound(clientArr)
        if booComma = true Then 
            mySQLwhere = mySQLwhere & ","
        end if
        mySQLwhere = mySQLwhere & "?"
        booComma = true
    Next
    mySQLwhere = mySQLwhere & ")) "
end if

...

if qsClient > "" Then
    for y = 0 to Ubound(clientArr)
        Response.write clientArr(y)
        set prm = cmd.CreateParameter("@prm", 129, 1, 50, clientArr(y))
        cmd.Parameters.Append prm
    next
end if

如果我直接运行查询或通过连接字符串而不是使用参数来创建它,它可以正常工作。它也可以使用没有撇号的客户端名称。

非常感谢任何帮助。如果可以,很高兴提供更多信息。

谢谢, 添

1 个答案:

答案 0 :(得分:1)

经过这么长时间的努力,它只是打击了我。像这样直接传递参数意味着我根本不需要逃避它。如果我删除了替换语句,它可以很好地保留单引号。我当然是在想这个。