.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 + "'";

.NET - 来自非用户输入的 MySQL 查询参数

我建议始终使用参数。使用字符串很简单,但猜猜你有布尔值、十进制或日期。不考虑格式会有所帮助。

使用参数,如果使用 @0、@

1、@2,则 sql 语句可以更短。您甚至可以编写一个带有参数数组的函数,该数组根据@0,@1,@2的顺序进行替换。这样可以节省大量代码。(例如 ExecuteSql(sql 作为字符串,paramarray myParameters 作为对象(