Передать параметр SQL-серверу SP с кавычками - PullRequest
1 голос
/ 02 ноября 2011

Я выполняю хранимую процедуру на сервере SQL, используя класс SqlCommand из C #.В настоящее время я просто строю строку выполнения, которая анализирует значения параметров для хранимой процедуры, а затем выполняет строку на сервере.Проблема в том, что когда у меня есть кавычки, строка не передается должным образом

Можно ли использовать объекты SqlParameter для передачи параметров, не беспокоясь о возможности выхода из кавычек?

Ответы [ 3 ]

1 голос
/ 02 ноября 2011

Да, это предпочтительный способ отправки параметров.

Пример:

using (SqlCommand cmd = new SqlCommand("SomeProcedure", connection) {
  cmd.Parameters.Add("@Id", SqlDbType.Int).Value = 42;
  cmd.Parameters.Add("@Text", SqlDbType.Varchar, 50).Value = "A string value";
  cmd.ExecuteNonQuery();
}
1 голос
/ 02 ноября 2011

Проще говоря, да - и вы все равно должны использовать объекты SqlParameter, а не конкатенацию строк, как минимум, для защиты от атак SQL-инъекций.

0 голосов
/ 02 ноября 2011

При использовании SqlParameter вы можете указать тип и размер параметров.Это гарантирует повторное использование плана выполнения (хотя это не такая проблема со StoredProcs), но также гарантирует, что вам не нужно беспокоиться о экранировании и цитировании - все это сделано для вас.

...