如何在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();
}

如何在c#和SQL Server中实现一个搜索方法

您不能参数化列名,除非您像动态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