【问题标题】:Search for text value in sql table and display it in listbox on textbox.textChanged event在 sql 表中搜索文本值并将其显示在 textbox.textChanged 事件的列表框中
【发布时间】:2014-07-15 16:42:31
【问题描述】:

所以基本上我有名为“Table1”的 sql 表,其中包含列 -nvar(10) Name 、 float Value 和 nvar(50) Date,所以 3 列 - “Name” “Value” “Date”。
我有 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 搜索

【问题讨论】:

  • 什么 RDBMS、MySQL 或 SQL-Server?
  • 你的问题到底是什么?
  • 跳过搜索,我想将所有表格数据显示到列表框中
  • 我会给你一个大概的想法。解决这个问题并告诉我。

标签: c# sql sql-server


【解决方案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"]));
            }
        }
    }
}

【讨论】:

  • 好的,所以这给了我“列”中的所有行如果我想给我所有列中的所有行怎么办
  • 它只为您提供column 来自myitemstable 的所有行。如果您需要更多列,您有 2 个选择。连接 SQL "Select column1+' ' +Column2 from..." 中的所有列,并且在 C# 中没有更改。或"SELECT column1, column2 from.." 并为c#中的每一列添加一个阅读器(string)reader["column1"]; (string)reader["column2"];
  • @Arch_interpreter 你想在列表框中显示什么?
  • 好的,我这样做"SELECT column1, column2 from.." 然后`ListBox2.Items.Add(new ListItem((string)reader["Name"]) + ""+new ListItem((string)reader[" Value"]) + ""+new ListItem((string)reader["Date"]) );` 但是“Value”列是浮动的,如何将其转换为字符串
  • 我想在列表框中显示所有表格内容,所以每一行都在换行
猜你喜欢
  • 2019-09-22
  • 2018-03-13
  • 2014-08-30
  • 2015-12-16
  • 1970-01-01
  • 2019-05-07
  • 2015-03-07
  • 2015-03-11
  • 1970-01-01
相关资源
最近更新 更多