Как мне преобразовать строку в безопасную строку SQL? - PullRequest
24 голосов
/ 03 апреля 2011

Я генерирую несколько SQL-операторов вставки из набора текстовых файлов.

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

Например, некоторые из входных данных, люди использовали слово не. "" "В not приводит к тому, что оператор sql считает, что строка завершилась, и поэтому вызывает ошибку.

Есть ли какой-нибудь метод .NET, который я могу вызвать для преобразования всех этих символов в escape-коды или безопасные символы?

Ответы [ 2 ]

27 голосов
/ 03 апреля 2011

Вы должны выбрать только один символ: ansi 0x27, он же одинарная кавычка:

safeString = unsafeString.Replace("'","''");
21 голосов
/ 03 апреля 2011

Не дезинфицируйте свои струны. Вместо этого используйте параметризованные запросы, так как они обрабатывают всю очистку.

Вы не указываете, какую базу данных вы используете, поэтому я предполагаю, что это MS SQL Server. У Microsoft есть статья на официальном сайте ASP.net об этом. Также см. MSDN для SqlCommand.Parameters и AddWithValue .

...