gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:25:17 24 4
gpt4 key购买 nike

我知道在您的查询中使用参数可以防止 SQL 注入(inject)(当从用户输入中获取值时)。但是如果我想构建一个使用预定义值的查询,例如

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

最佳答案

我建议始终使用参数。使用字符串很简单,但猜猜你有一个 bool 值、小数或日期。不考虑格式会有所帮助。

如果使用参数,你的 sql 语句可以更短,如果你使用@0、@1、@2。您甚至可以编写一个带有参数数组的函数,该数组按照@0、@1、@2 的顺序进行替换。这样可以节省很多代码。 (例如 ExecuteSql(sql 作为字符串,paramarray myParameters 作为对象)

关于c# - .NET - 来自非用户输入的 MySQL 查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35431440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com