C# mysql 参数化查询

标签 c# mysql

我有这样的代码,我需要从 Mysql 检索数据。如果我使用参数化查询,它不会采用实际参数值,而是采用参数名称作为值。

Error: @choise must be defined

MySqlConnection connection = new MySqlConnection("");
MySqlDataAdapter mySqlDataAdapter;
DataSet DS;
private string columnValue = xxx;
private string Choise = yyy;
MySqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM table2 WHERE " + columnValue + " = @choise";
command.Parameters.Add(new MySqlParameter("@choise", Choise));
DS = new DataSet();
connection.Open();
mySqlDataAdapter = new MySqlDataAdapter(command.CommandText, connection);
mySqlDataAdapter.Fill(DS);
connection.Close();

当我运行这个时,我得到如下查询:

SELECT * FROM table2 WHERE xxx = @choise

而不是

从表 2 中选择 *,其中 xxx = yyy。 哪里有问题?

我尝试过: command.Parameters.Add(new MySqlParameter("@choise", Choise)); command.Parameters.AddWithValue("@choise", Choise);

当我使用实际变量而不是参数时,它工作得很好。

最佳答案

我认为您需要在添加参数之前在命令上运行 Prepare():

command.CommandText = "select * from table2 where " + columnValue + " = @choise";
command.Prepare();
command.Parameters.AddWithValue("@choise", Choise);

关于C# mysql 参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22220190/

相关文章:

c# - 比较请求中的属性是否具有相等的值 C#

MySQL 限制事件发生在什么时候

php - MYSQL查询问题-想不通

mysql - 我可以创建一个过程或函数来删除 mysql 中的参数表吗?

c# - 为什么这不会产生溢出异常?

c# - 检查 Linq where 子句中是否为 Null

php - 具有子类别 PHP/MySQL 的类别

php - 如何获得 my_hit count 和 more_info 的 SUM

c# - ASP.NET Core API 的 ProducesResponseType 属性中包含的正确类型是什么?

c# - 异步进程启动并等待它完成