我想实现一种搜索方法,用户可以在其中选择 从组合框中搜索类型并在文本框中输入搜索值。
搜索按钮代码在此处,但是当我点击搜索按钮时,结果datagridview为空。
有什么问题?
private void button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True";
con.Open();
cmd.Connection = con;
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
cmd.CommandText = "select * from person where @parameter1=@parameter";
if (comboBox1.SelectedIndex == 0)
{
cmd.Parameters.AddWithValue("@parameter1", "name");
}
else
{
cmd.Parameters.AddWithValue("@parameter1", "code");
}
cmd.Parameters.AddWithValue("@parameter",textBox1.Text);
da.SelectCommand = cmd;
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
con.Close();
}
答案 0 :(得分:1)
除非您考虑使用动态SQL(在这种情况下不推荐),否则不能参数化列名。
您应该做的是更改逻辑和查询以处理名称或文本的NULL
,或者只是使用条件逻辑来构建查询。
string colSearchName;
if (comboBox1.SelectedIndex == 0)
colSearchName = "name";
else
colSearchName = "code";
cmd.CommandText = string.Format("select * from person where {0}=@parameter", colSearchName);
// ... so on and so forth