将特殊字符传递给SQL Server存储过程

时间:2015-02-11 14:43:38

标签: sql sql-server stored-procedures

我有一个加密例程,可以从2个变量生成加密字符串。此字符串可能包含也可能不包含"特殊字符"。特别是给我带来麻烦的是撇号和括号。

我目前使用[ ]将参数封装在execute命令中。但这并不总是奏效。

有没有人有一个很好的解决方案来尝试阻止错误在分配结束括号时被抛出?

2 个答案:

答案 0 :(得分:0)

您是否尝试过逐字文字字符串?

@"\somestring""";

http://www.dotnetperls.com/string-literal

答案 1 :(得分:0)

最简单的解决方案就是在输入字符串中转义撇号:

thePWD = encrypt(request("ap"), request("al"))
set rs = cn.execute("EXEC UpdateUser @uu_pswrd='" & replace(thePWD, "'", "''") & "'")

更有效的处理方法是为代码添加适当的参数处理。这可能不完全正确,因为我已经用VBA / VB6做了一段时间,但它应该让你接近:

thePWD = encrypt(request("ap"), request("al"))

set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = "UpdateUser"
cmd.CommandType = "StoredProcedure"
cmd.Parameters.Add(
  cmd.CreateParameter("@uu_pswrd", adVarChar, , 255, thePWD))
set rs = cmd.execute