gpt4 book ai didi

c# - 定义参数 mysql 字符串时出错

转载 作者:行者123 更新时间:2023-11-30 23:05:08 25 4
gpt4 key购买 nike

我有一段代码需要从 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

代替

SELECT * FROM table2 WHERE xxx = yyy。哪里有问题?

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

当我使用实际变量而不是参数时它工作正常。

编辑:

我从以下位置获取 columnvalueChoise:

columnValue = "`"+DS.Tables[0].Columns[cmb1FilterColumns.SelectedIndex].ToString()+"`";
Choise = "'"+cmb1FilterValues.SelectedItem.ToString()+"'";

最佳答案

在你编辑你的问题后,我想我发现了什么地方不对。

您在 columnValueChoise 中添加了不必要的单引号。你不需要它们。

就像使用它们一样;

columnValue = DS.Tables[0].Columns[cmb1FilterColumns.SelectedIndex].ToString();
Choise = cmb1FilterValues.SelectedItem.ToString();

因为使用单引号,你的命令会是这样的;

SELECT * FROM table2 WHERE 'xxx' = 'yyy'

这似乎不是一个有效的 sql。

关于c# - 定义参数 mysql 字符串时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22223621/

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