Как заменить апостроф двойным апострофом в строке? - PullRequest
7 голосов
/ 13 октября 2011

У меня есть строка

good overview of ESP's in more detail than you probably need.

При вставке в таблицу SQL выдает ошибку. Поэтому я хочу заменить апостроф в строке двойным апострофом, например

good overview of ESP''s in more detail than you probably need

Как манипулировать этим в c #?

Ответы [ 5 ]

10 голосов
/ 13 октября 2011

Очень просто:

string s = "good overview of ESP's in more detail than you probably need.";
string escaped = s.Replace("'","''");

Примечание. Обычно безопаснее использовать параметры команды. Особенно, если значения входных строк не контролируются вашим кодом (т.е. пользовательскими записями).

9 голосов
/ 13 октября 2011

Использовать объект Parameter.

  myCommand.InsertCommand.Parameters.Add("@myString", SqlDbType.VarChar, 200);
  myCommand.InsertCommand.Parameters["@myString"].Value = @"good overview of ESP's in more detail than you probably need.";
2 голосов
/ 23 октября 2012

Я работал над этой проблемой целую вечность. Сделайте это на клиенте, заменив одинарную кавычку на две одинарные. Это работает, если вы выполняете sp с несколькими входными параметрами varchar. Единственная проблема с этим - SQL-инъекция, то есть люди могут видеть, что вы делаете на клиенте, что никогда не бывает хорошо. Единственный способ обойти это - использовать параметры SQL на сервере, как они говорили ранее.

0 голосов
/ 22 декабря 2014

myCommand.InsertCommand.Parameters.Add ("@ myString", SqlDbType.VarChar, 200);myCommand.InsertCommand.Parameters [ "@ туЗЬптд"]. Значение

0 голосов
/ 13 октября 2011

String.Replace(String,String) должно работать нормально.В этом примере вы хотели бы:

String.Replace("'", "''")

Однако я не думаю, что это решит вашу проблему.Я полагаю, что вам более уместно искать:

String.Replace("'", "\'")

Причиной этого является то, что MySQL и другие версии SQL ожидают, что строки будут заключены в одинарные кавычки.

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