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

jm81lzqq  于 2022-12-10  发布在  Mysql
关注(0)|答案(1)|浏览(118)

我知道在查询中使用参数可以防止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 + "'";
00jrzges

00jrzges1#

我建议始终使用参数。对于字符串,它很简单,但您可以猜测是布尔型、小数型或日期型。不去考虑格式设置会很有帮助。
有了参数,如果你使用@0,@1,@2,你的SQL语句可以更短。你甚至可以编写一个带有参数数组的函数,按照@0,@1,@2的顺序替换。这节省了大量的代码。(如ExecuteSql(SQL为字符串,参数数组my参数为对象))

相关问题