如何在c#和SQL Server中实现一个搜索方法
本文关键字:一个 方法 搜索 实现 Server SQL | 更新日期: 2023-09-27 18:03:49
我想实现一个搜索方法,用户可以在其中选择从组合框中搜索类型,并在文本框中输入搜索值。
搜索按钮代码在这里,但是当我点击搜索按钮时,结果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();
}
您不能参数化列名,除非您像动态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