2016-02-16 4 views
1

Я понимаю, что использование параметров с вашими запросами предотвращает внедрение sql (при получении значений с пользовательского ввода). Но если бы я хотел построить запрос, который использует предопределенные значения, например..NET - параметр запроса MySql от не пользовательского ввода

MySqlCommand Command = Connection.CreateCommand(); 
Command.CommandText = "SELECT employee_address FROM employees WHERE employee_name = @employee_name"; 
Command.Parameters.AddWithValue("employee_name", "John"); 

Могу я не использовать это вместо этого?

MySqlCommand Command = Connection.CreateCommand(); 
Command.CommandText = "SELECT employee_address FROM employees WHERE employee_name = 'John'"; 

Нужно ли использовать параметры в этом сценарии?

UPDATE

я могу также сделать это таким образом?

string employee_name = "John"; //value depends on some sort of selection (not user input) 

MySqlCommand Command = Connection.CreateCommand(); 
Command.CommandText = "SELECT employee_address FROM employees WHERE employee_name = '" + employee_name + "'"; 
+1

Если вы не принимаете этот '' John'' в качестве входного сигнала, нет, не обязательно. –

+0

Тогда ваш код в порядке –

+0

@Joachim - см. ОБНОВЛЕНИЕ - значение «Джон» может быть чем-то другим, например «Джек» в зависимости от какого-то выбора, может ли это иметь какое-то значение? – langjacques

ответ

0

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

С параметрами ваш SQL-оператор может быть короче, если вы используете @ 0, @ 1, @ 2. Вы даже можете написать функцию с параметрическим массивом, который заменяется в соответствии с порядком @ 0, @ 1, @ 2. Это экономит много кода. (например, ExecuteSql (sql as string, paramarray myParameters as object)