应该在sql字符串参数中转义哪些字符

时间:2009-07-09 17:49:34

标签: sql ado.net objectdatasource

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

4 个答案:

答案 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()