在sql表中搜索文本值,并在textbox.textChanged事件的列表框中显示它

时间:2014-07-15 16:42:31

标签: c# sql sql-server

所以基本上我的sql表名为" Table1"其中有列-nvar(10)名称,浮点值和nvar(50)日期,所以3列 - "名称" "值" "日期&#34 ;.
我有textbox1和listbox1 所以基本上我想在listbox1中显示与texbox1值匹配的表数据。所以textbox1是搜索区域,结果显示在列表框中。
我想制作布尔函数,如果textbox1的值与表列中的任何行匹配,则返回true,并为每列中的每一行调用此函数。

类似的东西(遍历表格列和表格行)

   protected void Box3_TextChanged(object sender, EventArgs e)
        {
            string txt = Box3.Text.ToString();
           foreach (clmn in Tablename.columns){
               foreach(row in Tablename.Rows){

               if(GetSearchResults(txt))
               {
                ListBox1.add(txt);
               }
               }
           }

        }

和GetSearchResults之类的东西

  public Boolean GetSearchResults(string text) {

            SqlConnection connection = new SqlConnection();
            connection.ConnectionString = ConfigurationManager.ConnectionStrings["FatherDB"].ConnectionString;
            connection.Open();
            SqlCommand sqlCmd = new SqlCommand("SELECT *FROM Table1 WHERE Name Like '%@text%' OR Value Like '%@text%'", connection);
            SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

            sqlCmd.Parameters.AddWithValue("@text", text);
            /code here..
            return true;

        }

我还考虑用所有表数据填充不可见的Listbox2,然后在Listbox2中搜索而不是SQL搜索

1 个答案:

答案 0 :(得分:1)

这是一般的想法......

ListBox lb = new ListBox();
string connectionString = "your connection string here";
using (SqlConnection con = new SqlConnection(connectionString))
{
    con.Open();
    string query = "SELECT Name + ' ' + cast(Date as varchar(20))+' '+ cast(Value as varchar(20)) as 'Text' FROM MyTable";
    using (SqlCommand cmd = new SqlCommand(query, con))
    {
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read()) {
                lb.Items.Add(new ListItem((string)reader["Text"]));
            }
        }
    }
}