.NET - 来自非用户输入的 MySQL 查询参数
本文关键字:MySQL 查询 参数 输入 用户 NET | 更新日期: 2023-09-27 18:34:44
我知道在查询中使用参数可以防止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 + "'";
我建议始终使用参数。使用字符串很简单,但猜猜你有布尔值、十进制或日期。不考虑格式会有所帮助。
使用参数,如果使用 @0、@1、@2,则 sql 语句可以更短。您甚至可以编写一个带有参数数组的函数,该数组根据@0,@1,@2的顺序进行替换。这样可以节省大量代码。(例如 ExecuteSql(sql 作为字符串,paramarray myParameters 作为对象(