C# 参数为order by的SQL Select语句

C# 参数为order by的SQL Select语句,c#,mysql,sql,C#,Mysql,Sql,无法打印我需要打印的代码。 我有一个下拉列表,让用户选择他们想要的表排序。我正在获取该值并将其绑定到参数'@param'。它没有将表中的项目按正确的顺序排列 注意:当我将“字符串sql”更改为下拉列表中的值时,它可以正常工作 string sql = "Select * from yeet order by @param desc;"; MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.Prepare(); cmd.Parameters.Ad

无法打印我需要打印的代码。 我有一个下拉列表,让用户选择他们想要的表排序。我正在获取该值并将其绑定到参数'@param'。它没有将表中的项目按正确的顺序排列

注意:当我将“字符串sql”更改为下拉列表中的值时,它可以正常工作

string sql = "Select * from yeet order by @param desc;";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Prepare();
cmd.Parameters.AddWithValue("@param", DropTopWop.SelectedValue.ToString());
MySqlDataReader reader = cmd.ExecuteReader();

您需要这样做:

order by    
    case @param
        when 'PutYourColumNameHere' then PutYourColumNameHere
        when 'AnotherColumn' then AnotherColumn--, and so on                    
    end desc
因此,例如,如果您的表
players
有两列,分别名为
Age
Name
,那么它将如下所示:

Select * from players 
order by 
    case @param 
        when 'Age' then Age
        when 'Name' then Name               
    end desc;

您需要这样做:

order by    
    case @param
        when 'PutYourColumNameHere' then PutYourColumNameHere
        when 'AnotherColumn' then AnotherColumn--, and so on                    
    end desc
因此,例如,如果您的表
players
有两列,分别名为
Age
Name
,那么它将如下所示:

Select * from players 
order by 
    case @param 
        when 'Age' then Age
        when 'Name' then Name               
    end desc;

那么,您是如何在DropDownList中填写该值列表的?参数不能用于此。参数用于表示where语句中的值或insert/update/delete查询中的值。如果您完全确定用户不能为字段键入值,而只是选择一个预定义字段名称,则可以使用字符串concatenation@Steve那么,我还可以使用什么来代替Select语句的参数呢?正如我所说的。您应该绝对确定,您的用户不能键入Order By语句的值,而只能从只读下拉列表中选择一项。然后您只需在sql中连接SelectedValuestring@JOhn好的有时有人手动填写列表,因此.SelectedValue为空。您已经有了答案。那么,您是如何在DropDownList中填写该值列表的?参数不能用于此。参数用于表示where语句中的值或insert/update/delete查询中的值。如果您完全确定用户不能为字段键入值,而只是选择一个预定义字段名称,则可以使用字符串concatenation@Steve那么,我还可以使用什么来代替Select语句的参数呢?正如我所说的。您应该绝对确定,您的用户不能键入Order By语句的值,而只能从只读下拉列表中选择一项。然后您只需在sql中连接SelectedValuestring@JOhn好的有时有人手动填写列表,因此.SelectedValue为空。你已经有答案了。