【发布时间】:2016-04-05 19:52:09
【问题描述】:
我有一个问题,我想用 SQL 字符串中的双引号替换一些特定的单引号,但不是该字符串中的所有单引号。
EXEC procedureName 'param'eter1', 'parameter2'
在上面的示例中,我只想替换 'param'eter1' 中的单引号,但参数开头和结尾的单引号保持不变。
使用下面的命令替换字符串中的所有单引号,它看起来像这个''param''eter1'',这是不正确的。
sometext.Replace("'", "''")
我希望它看起来像这样:
EXEC procedureName 'param''eter1', 'parameter2'
另外请注意,我已经知道使用 SqlParameter 是处理 SQL 参数中的单引号的更好解决方案,但由于项目环境的限制,我无法实现。
更新:
在使用它们构建完整语句之前更改各个参数不是我的选择,因为我无权访问该代码。我的项目就像一个数据层,它从其他应用程序接收 SQL 字符串进行处理。
【问题讨论】:
-
您可以使用匹配
'的正则表达式,而不是在空格之后和空格/逗号之前。但是你真正需要的是改变你的项目的架构(或者至少命名服务的名称,这样这里的人就不会成为 SqlInjection 的受害者......) -
在使用单个参数构造完整语句之前先对它们进行更改。