Регулярные выражения в C # - PullRequest
0 голосов
/ 03 июня 2009

Я пытаюсь сделать datacontent.executeCommand ("строка") в C #. Когда я пытаюсь выполнить вставку, у меня возникают проблемы, потому что каждый раз, когда в записи есть «слово», я думаю, что это новый столбец, и я выбрасываю исключение.

Как превратить 'word' в ''word''?

Ответы [ 3 ]

1 голос
/ 03 июня 2009

Как предполагает Томас и Джейсон, лучше всего использовать SQLParameters, чтобы избежать этих проблем.

Однако, если это требует много изменений кода и вам нужно быстрое исправление, тогда я бы сказал: Вам не нужно регулярное выражение для этого. Вам нужно только сделать string.replace

string query;
...
query.Replace("'", "''");

Если я не правильно понял ваш вопрос и его единственные слова «слово», которые нужно изменить, вы можете сделать:

query.Replace("'word'", "''word''");
1 голос
/ 03 июня 2009

Вы можете экранировать символы в строках SQL с помощью \. Однако я считаю, что лучшее решение вашей проблемы (и множества других, с которыми вы столкнетесь позже, если не сделаете этого с самого начала) - это параметры SQL.

0 голосов
/ 03 июня 2009

Я хотел бы поприветствовать вас в прекрасном мире SQL-инъекций, где пользователи могут взломать вашу базу данных, выполнив вредоносный SQL из-за того, что вы выполняете произвольные строки;

Вам действительно следует использовать параметры (как в System.Data.SqlClient) или использовать созданные для вас объекты модели данных LINQ, задать для них значения и затем отправить свои изменения. Позвольте слою доступа к данным избежать ваших значений и защитить вас от пользователя, который может вводить текст, содержащий операторы SQL, такие как DELETE * FROM IMPORT_TABLE.

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