Обработка одиночной кавычки в строке SQL

У меня есть приложение, в котором значения в текстовом поле отправляются в базу данных.

Например, у меня есть форма с одним полем (текстовое поле). Когда я нажимаю кнопку Ok, содержимое текстового поля вставляется как запись в таблицу. Я просто обрезаю и извлекаю текст текстового поля в переменную и передаю его в свою строку SQL.

Проблема в том, что всякий раз, когда что-то вроде "Это" или "Друг", одинарная цитата идентифицируется как конец строки. В Delphi я видел нечто вроде QuotedString, чтобы избежать этого. Любые идеи от вас?

Ответы

Ответ 1

Никогда не создавайте подобные SQL-запросы, это очень опасно (прочтите это). Используйте параметры, т.е.

var command = new SqlCommand("select * from person where firstname = @firstname");
SqlParameter param  = new SqlParameter();
param.ParameterName = "@firstname";
param.Value         = "testing12'3";
command.Parameters.Add(param);

Ответ 2

Используйте .Replace("'","''''")

Например

string name = txtName.Text.Replace("'","''''");

Теперь name можно передать как параметр в хранимой процедуре и т.д.

Ответ 3

Надеюсь, это поможет вам...

public static string DoQuotes(string sql)
    {
        if (sql == null)
            return "";
        else
            return sql.Replace("'", "''");
    }