我需要一个完整的字符列表,应该在sql字符串参数中进行转义以防止异常。我假设在将其传递给我的ObjectDataSource过滤器参数之前,我需要用转义版本替换所有违规字符。
答案 0 :(得分:3)
不,ObjectDataSource将为您处理所有转义。任何参数化查询也不需要转义。
答案 1 :(得分:1)
正如其他人所指出的,在有人认为他们需要提出这个问题的99%的案例中,他们做错了。参数化是要走的路。如果你真的需要自己逃避,试着找出你的数据库访问库是否提供了这个功能(例如,MySQL有mysql_real_escape_string
)。
答案 2 :(得分:0)
在线SQL书籍: 搜索字符串文字:
字符串文字
字符串文字由零个或多个由引号括起的字符组成。如果字符串包含引号,则必须对这些引号进行转义,以便解析表达式。字符串中允许使用除\ x0000之外的任何双字节字符,因为\ x0000字符是字符串的空终止符。
字符串可以包含需要转义序列的其他字符。下表列出了字符串文字的转义序列。
\一个 警报
\ b 退格
\˚F 表格提要
\ n 新行
\ r 回车
\吨 水平标签
符\ v 垂直选项卡
\” 引号
\ 反斜杠
\ xhhhh 十六进制表示法中的Unicode字符
答案 3 :(得分: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()