如何根据用户输入搜索值过滤行

时间:2014-12-05 12:51:50

标签: c# sql select

我对本文中的代码有疑问:

How to display rows based on search value which works for multiple columns

在行dv.RowFilter =" col1 ='" + ss +"'和col2> = 10&#34 ;;

我们如何只使用搜索值并在结果中选择1行?

就像我们有一个专栏:名称,只是在名称列中显示搜索值?

我的代码:

private void button3_Click(object sender, EventArgs e)
{
   string ss = searchbox.Text;
    SqlConnection con = new SqlConnection("Data Source=.;
                           Initial Catalog=db3;Integrated Security=True");
   sAdapter = new SqlDataAdapter("select * from phone", con);
   sAdapter.Fill(sDs, "phone");

   DataView dv = sDs.Tables[0].DefaultView;

   dataGridView1.DataSource = sDs.Tables["phone"];
   dv.RowFilter = "name='" + ss;   
}

@ hamed2011已解决问题

1 个答案:

答案 0 :(得分:0)

我认为问题依赖于最后一句:

 dv.RowFilter = "name='" + ss;  

您忘了关闭报价单。它应该是

 dv.RowFilter = "name='" + ss+"'";

然而 - 关于附加链接的样本 - 请,请永远不要使用字符串连接查询数据库。这可能是最常见的安全漏洞。

在此处阅读有关使用查询参数的信息:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters%28v=vs.110%29.aspx

编辑:关于行重复,我怀疑数据集中的旧数据。您是否尝试重新创建数据集或在加载前清除它?

确保没有数据重复的正确查询

select distinct name from phone