Как написать 'в запросе SQL? - PullRequest
4 голосов
/ 08 ноября 2010

Мне нужно использовать символы ' в запросе доступа.

, но если я напишу, выберите Fname from MEN where Fnale = 'j'o' Я получу ошибку

, как написать символы '

Спасибо заранее

Ответы [ 6 ]

9 голосов
/ 08 ноября 2010

Попробуйте обратную косую черту \' или две кавычки ''.

Это зависит от вашей базы данных. MySQL использует \' и Microsoft SQL и MS Access использует две цитаты ''.

5 голосов
/ 08 ноября 2010

Одиночные кавычки можно экранировать двумя одинарными кавычками.

SELECT Fname FROM MEN WHERE Fnale = 'j''o'
3 голосов
/ 08 ноября 2010

Для SQL Server:

var cmd = new SqlCommand("select fname from MEN where fnale = @query", myConnection);
cmd.Parameters.AddWithValue("@query", "j'o");

Все решения, в которых вы сами добавляете свой параметр в строку sql, неверны (или, по крайней мере, с высоким риском), потому что они уязвимы дляАтака SQL-инъекций.

Вы упомянули «запрос доступа», для Microsoft Access / Ole используйте следующий синтаксис:

var cmd = new OleDbCommand("select fname from MEN where fnale = ?", myConnection);
cmd.Parameters.AddWithValue("?", "j'o"); // Order does matter
2 голосов
/ 08 ноября 2010

Как говорили другие, вы можете избежать кавычек. Но если вы отправляете этот запрос из C #, тогда лучше использовать параметры - таким образом, все экранирование выполняется для вас, поэтому вы не можете забыть какой-то особый случай, когда пользовательский ввод все еще может вызывать нежелательные эффекты. ( маленькие круглые столики , кто-нибудь? :-))

2 голосов
/ 08 ноября 2010

Я бы использовал буквальную строку, чтобы избежать экранирования всего

string query = @"select Fname from MEN where Fnale = 'jo'";

Если вы экранируете это в отношении SQL, тогда используйте еще одну одинарную кавычку для экранирования кавычек:

select Fname from MEN where Fnale = ''jo''
1 голос
/ 08 ноября 2010

Попробуйте заменить 'на' '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...