Обработка одиночной кавычки в строке 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("'", "''");
}