Проблема SQL-запроса во встроенном запросе в Asp.net - PullRequest
0 голосов
/ 25 мая 2011

Моя структура таблицы sql такая:

ID  DataName
1   Lipsum lorem 
3   lipsum's lorem

Мой встроенный запрос в asp.net таков:

select * from table where DataName like 'lipsum's lorem'

. Выдает следующие ошибки:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 's'.
Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark after the character string ''.

Я не хочу создавать хранимую процедуру, чтобы предотвратить это, я хочу решить эту проблему с помощью встроенных запросов.

Ответы [ 5 ]

5 голосов
/ 25 мая 2011

Вам нужно экранировать ' в 'loom lipsum'

'lipsum''s lorem'

Но реальное исправление заключается в использовании параметризованного запроса для предотвращения внедрения SQL.

SqlCommand.CommandText = "SELECT * FROM Table WHERE DataName = @DataName";

В объект вашей команды добавьте параметр для @DataName с его значением.

SqlCommand.Parameters.AddWithValue("@DataName", Value);

1 голос
/ 25 мая 2011

Ваш запрос должен выглядеть следующим образом ...

select * from table where DataName like 'lipsum''s lorem'

Поскольку вам нужно выйти из ' to ', чтобы заставить его работать.

Для более подробной информации перейдите по этой ссылке: http://blog.sqlauthority.com/2008/02/17/sql-server-how-to-escape-single-quotes-fix-error-105-unclosed-quotation-mark-after-the-character-string/

Если вы используете Command Parameters, проверьте эту ссылку:

0 голосов
/ 06 июня 2011

Использовать параметризованный запрос.

var command = new SqlCommand()
    {
        CommandText = "SELECT * FROM [table] WHERE DataName = @dataName",
        Parameters = { { "@dataName", "lipsum's lorem" } }
    }
0 голосов
/ 25 мая 2011

ID DataName

1 Lipsum lorem

3 Lorem Lumm

выберите * из таблицы, где DataName похожа на «lumm lipsum»

или

выбрать * из таблицы, где DataName = 'lumm' lumm '

выберите * из таблицы, в которой DataName подобен 'lipsum%' (для выбора обеих строк)

0 голосов
/ 25 мая 2011

Вы должны заменить одинарную кавычку на двойную кавычку

String.replace("'", "''")

Это означает, что нужно поместить строку поиска в строковую переменную и заменить одинарную кавычку двойной кавычкой

string str = "lipsum's lorem"
str.Replace("'", "''")
...