c# - C# 中的 mysql select 命令具有动态列名

标签 c# mysql datagridview

我有一个 C# 字符串,其中包含表的列名称,如下所示

shown_itemsName = "billno,department,date,subtotal,tea,coffee";

我想在 dataGridView 中显示一个表,其中的列名位于字符串 (shown_itemsName) 中,但是当我编写 sql 查询时

cmdDataBase.CommandText = "select @shown_itemsName from employee.transaction where department = @department AND MONTH(date) = @month_ AND YEAR(date) = @year_";
cmdDataBase.Parameters.AddWithValue("@shown_itemsName", shown_itemsName);
cmdDataBase.Parameters.AddWithValue("@department", this.department.Text);
cmdDataBase.Parameters.AddWithValue("@month_", this.dateTimePicker1.Value.Month);
cmdDataBase.Parameters.AddWithValue("@year_", this.dateTimePicker1.Value.Year);

我得到一个只有 1 列和 4 行的表格,单元格值为 billno、department、date、subtotal、tea、coffee,并且该列的标题也是相同的字符串。 而我应该得到 6 列和 4 行作为结果,并使用“,”分隔的子字符串作为列名称

最佳答案

您无法添加带参数的新列。如果它是动态的,您别无选择,只能每次都编写查询并对其执行 CommandType.Text 命令。

对于每个请求,您必须:

cmdDataBase.CommandText = "select " + shown_itemsName + " from employee.transaction where department = @department AND MONTH(date) = @month_ AND YEAR(date) = @year_";

cmdDataBase.Parameters.AddWithValue("@department", this.department.Text);
cmdDataBase.Parameters.AddWithValue("@month_", this.dateTimePicker1.Value.Month);
cmdDataBase.Parameters.AddWithValue("@year_", this.dateTimePicker1.Value.Year);

using(var reader = cmdDataBase.ExecuteReader()) {
    while(reader.Read()) {
        // ...
    }
    reader.Close();
}

关于c# - C# 中的 mysql select 命令具有动态列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31984922/

相关文章:

c# - WPF C# 数据网格对象引用未设置为对象的实例

c# - 如何判断 datagridview 列是图像列还是复选框列?

c# - 如何检查datagridview中的Checkbox是否被选中

c# - Sitecore 7 搜索索引问题

C# 创建一个比较两个成员属性的 LambdaExpression(对于 EF Core HasQueryFilter)

c# - 根据请求从 MVC web api 返回 xml 或 json

c# - 避免使用托管语言的分支

javascript - 在查询内分配值并且它没有更新

php - 从php mysql表中删除数据

mysql根据条件限制比较中的行数