Во-первых, использование конкатенации строк для предоставления параметров может привести к внедрению SQL, лучше использовать SqlParameter
для передачи параметров.
Во-вторых, рассмотрите возможность деформации всех классов SqlClient
с помощью области видимости, чтобыНе беспокойтесь, закройте / утилизируйте.
Наконец, для вашего вопроса вы можете использовать WHERE 1=1
, а затем добавлять любые условия, которые вам нужны.Возьмите свой код как экземпляр.
string connString = @"data source=ABC; database=XYZ; user id=sa; password=1234;";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
string query = "SELECT * FROM EntryDatabase WHERE 1=1";
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
if (Agree_type_srch.SelectedValue != null)
{
query += " AND Agree_type = @agree_type";
cmd.Parameters.AddWithValue("agree_type", Agree_type_srch.SelectedValue);
}
if (Status_srch.SelectedValue != null)
{
query += " AND Curnt_St = @curnt_st";
cmd.Parameters.AddWithValue("curnt_st", Status_srch.SelectedValue);
}
cmd.CommandText = query;
using (SqlDataAdapter sqldatad = new SqlDataAdapter())
{
DataSet ds = new DataSet();
sqldatad.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sqldatad.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
}