将特殊字符传递给 SQL 服务器存储过程

Passing special characters to a SQL Server stored procedure

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

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

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

您尝试过逐字字符串吗?

@"\somestring""";

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

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

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