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

代替

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/

相关文章:

将 DataTable 作为参数传递时出现 C# FormatException

mysql - 如何在SQL中制作二维计数表?

java - 在 LAN 客户端上测试 MySQL 数据库

mysql - SQL查询获取特定用户的所有数据

c# - 如何将 WebBrowser 从 IE 更改为 Firefox

c# - 为什么我不能从异步代码中捕获异常?

java - 如何将java正则表达式转换为mysql正则表达式

javascript - 在 php 中使用下拉菜单排序和检索数据

c# - 使用.rsp文件进行构建时,为什么会出现错误CS0116?

c# - Global.asax 中 DbContext 的静态字段与 Controller 类中 DbContext 的实例字段?