【发布时间】:2012-02-24 19:22:22
【问题描述】:
我有许多下拉列表,允许用户选择值。用户还可以选择不选择某些下拉菜单。
我正在尝试构建一个 SQL 语句,即使没有使用下拉列表,它也会显示所有结果。我尝试了以下方法,但没有返回结果:
string field1 = null;
string field2 = null;
using (SqlCommand command = new SqlCommand("SELECT * FROM Table WHERE ((@Field1 is null) OR (Field1=@Field1)) AND ((@Field2 is null) OR (Field2=@Field2))", connection))
{
command.Parameters.Add(new SqlParameter("@Field1", field1));
command.Parameters.Add(new SqlParameter("@Field2", field2));
}
有人可以提出任何想法吗?我有太多下拉菜单,无法为每个未选择的组合创建 SQL 语句。
编辑:
为了澄清,'Field1' 和 'Field2' 的值可以从下拉列表中获得。然而,如果他愿意,用户可以不选择其中之一。因此,我想为一般情况下的 SQL 语句提供服务,如果用户没有选择任何内容,则会显示所有结果。这可以通过编写来实现
WHERE 性别=性别
在 SQL Server 中,但通过 C# 完成时没有返回结果。
【问题讨论】:
-
您确定在您选择的表格中,字段 1 的值是“字段 1”,字段 2 的值是“字段 2”吗?
-
他们没有这些值,但我试图在表格中显示所有结果。当我使用该代码在 SQL Server 中编写查询时,它的行为就好像它忽略了“WHERE”子句,在用户没有从下拉列表中选择某些内容的情况下,这是我想要的。
-
您的参数命名不正确,请参阅下面 Shark 的回答。
-
如果用户未选择任何内容,则不要将任何内容分配给变量 Field1 或 Field2。
-
@muratgu - 更新了我的代码以反映更改。
标签: c# asp.net sql sql-server database