4

我需要一个完整的字符列表,应该在 sql 字符串参数中转义以防止异常。我假设在将所有有问题的字符传递给我的 ObjectDataSource 过滤器参数之前,我需要用转义版本替换所有有问题的字符。

4

4 回答 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 回答