我需要一个完整的字符列表,应该在 sql 字符串参数中转义以防止异常。我假设在将所有有问题的字符传递给我的 ObjectDataSource 过滤器参数之前,我需要用转义版本替换所有有问题的字符。
问问题
4835 次
4 回答
3
不,ObjectDataSource 将为您处理所有转义。任何参数化查询也不需要转义。
于 2009-07-09T17:52:03.553 回答
1
正如其他人指出的那样,在 99% 的情况下,有人认为他们需要问这个问题,但他们做错了。参数化是要走的路。如果您确实需要逃避自己,请尝试找出您的 DB 访问库是否为此提供了功能(例如,MySQL 有mysql_real_escape_string
)。
于 2009-07-09T18:38:50.310 回答
0
SQL 在线书籍:搜索字符串文字:
字符串文字
字符串文字由零个或多个用引号括起来的字符组成。如果字符串包含引号,则必须对这些引号进行转义才能解析表达式。字符串中允许除 \x0000 之外的任何两字节字符,因为 \x0000 字符是字符串的空终止符。
字符串可以包含其他需要转义序列的字符。下表列出了字符串文字的转义序列。
\一个警报
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\" 引号
\ 反斜杠
\xhhhh 十六进制表示法的 Unicode 字符
于 2009-07-09T18:10:55.357 回答
0
这是我用来摆脱撇号的一种方法。您可以对遇到的其他违规角色做同样的事情。(VB.Net 中的示例)
Dim companyFilter = Trim(Me.ddCompany.SelectedValue)
If (Me.ddCompany.SelectedIndex > 0) Then
filterString += String.Format("LegalName like '{0}'", companyFilter.Replace("'", "''"))
End If
Me.objectDataSource.FilterExpression = filterString
Me.displayGrid.DataBind()
于 2012-04-11T19:04:48.817 回答