какие символы следует экранировать в строковых параметрах sql - PullRequest
4 голосов
/ 09 июля 2009

Мне нужен полный список символов, которые должны быть экранированы в строковых параметрах sql для предотвращения исключений. Я предполагаю, что мне нужно заменить все оскорбительные символы на экранированную версию, прежде чем я передам это в свой параметр фильтра ObjectDataSource.

Ответы [ 4 ]

3 голосов
/ 09 июля 2009

Нет, ObjectDataSource будет обрабатывать все экранирование для вас. Любой параметризованный запрос также не требует экранирования.

1 голос
/ 09 июля 2009

Как уже отмечали другие, в 99% случаев, когда кто-то считает, что ему нужно задать этот вопрос, он делает это неправильно. Параметризация - это путь. Если вам действительно нужно убежать от себя, попробуйте выяснить, предлагает ли ваша библиотека доступа к БД функцию для этого (например, MySQL имеет mysql_real_escape_string).

0 голосов
/ 11 апреля 2012

Вот способ, которым я раньше избавлялся от апострофов. Вы можете сделать то же самое с другими оскорбительными персонажами, с которыми столкнетесь. (пример в 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()
0 голосов
/ 09 июля 2009

SQL Книги онлайн: Поиск строковых литералов:

Строковые литералы

Строковый литерал состоит из нуля или более символов, заключенных в кавычки. Если строка содержит кавычки, они должны быть экранированы, чтобы выражение могло быть проанализировано. Любой двухбайтовый символ, кроме \ x0000, разрешен в строке, потому что символ \ x0000 является нулевым ограничителем строки.

Строки могут содержать другие символы, для которых требуется escape-последовательность. В следующей таблице перечислены escape-последовательности для строковых литералов.

\ а Предупреждение

\ б Backspace

\ е Форма подачи

\ п Новая строка

\ г Возврат каретки

\ т Горизонтальная вкладка

\ v Вертикальная вкладка

\» Кавычка

\ Backslash

\ xhhhh Символ Unicode в шестнадцатеричном формате

...