在C#中选择多个下拉菜单的动态SQL

本文关键字:下拉菜单 动态 SQL 选择 | 更新日期: 2023-09-27 18:29:35

Hie我是ASP.Net的新手,需要一些帮助。

这是我的问题:我的应用程序中有4个下拉菜单,一个按钮显示搜索,网格视图显示结果。我试图根据下拉列表的值过滤结果。

因此,我将查询写为"select*from table where column1=dd1.SelectedItem.Value",但棘手的是,即使选择了其中一个下拉列表、两个下拉列表或全部下拉列表,我也希望显示结果。如何在SQL查询中编写Where部分??我知道我必须使用动态SQL,但我对动态SQL一无所知。

在C#中选择多个下拉菜单的动态SQL

使用类似的东西

            string q = @"
SELECT * FROM table 
WHERE 
(@value1 IS NULL OR column1 = @value1) 
AND
(@value2 IS NULL OR column2 = @value2) 
AND
(@value3 IS NULL OR column3 = @value3) 
";
            var command = new SqlCommand();
            command.CommandText = q;
            command.Parameters.AddWithValue("@value1", dd1.SelectedItem.Value);
            command.Parameters.AddWithValue("@value2", dd2.SelectedItem.Value);
            command.Parameters.AddWithValue("@value3", dd3.SelectedItem.Value);

首先,您应该将dd1.SelectedItem.Value存储在一个变量中作为

string v = dd1.SelectedItem.Value.ToString();

然后为您的查询创建一个字符串作为

string q = "select * from table where (column1 is null or column1=" + v + ")";

然后使用这个代码:

SqlCommand com = new SqlCommand(q, yoursqlconnection);
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
da.Fill(dt);