.NET - параметр запроса MySql из не пользователя
Я понимаю, что использование параметров с вашими запросами предотвращает внедрение SQL (при получении значений из пользовательского ввода). Но если бы я хотел построить запрос, который использует предопределенные значения, например
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'";
Нужно ли использовать параметры в этом сценарии?
ОБНОВИТЬ
Могу ли я сделать это так?
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 ответ
Я рекомендую всегда использовать параметры. Со строкой это просто, но угадайте, что у вас есть логическое, десятичное или дата. Это помогает не думать о форматировании.
С параметрами ваш sql-оператор может быть короче, если вы используете @0, @1, @2. Вы могли бы даже написать функцию с массивом параметров, который заменяется в соответствии с порядком @0, @1, @2. Это экономит много кода. (например, ExecuteSql(sql как строка, paramarray myParameters как объект)