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

时间:2015-07-20 14:48:11

标签: c# sql-server

我想实现一种搜索方法,用户可以在其中选择 从组合框中搜索类型并在文本框中输入搜索值。

搜索按钮代码在此处,但是当我点击搜索按钮时,结果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();
}

1 个答案:

答案 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