使用sql查询结果填充listBox

时间:2016-08-17 14:21:06

标签: c# wpf listbox

我试图用查询生成的值填充列表框,代码运行没有任何问题,但列表框没有显示任何结果,我做错了什么,有什么遗漏?

String sql = "SELECT * FROM products where code = "+textBox1.Text;
                SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, conn); //c.con is the connection string
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    conn.Open();
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                            if (reader.Read())
                            {
                                listBox1.Items.Add(reader["description"].ToString() + ":    "+reader["price"].ToString());
                                listBox1.Refresh();
                            }
                        reader.Close();
                        conn.Close();
                    }
                }

2 个答案:

答案 0 :(得分:3)

如果您的代码列是字符串类型,那么

    String sql = "SELECT * FROM products where code = '"+textBox1.Text + "'";
    SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, conn); //c.con is the connection string
    using (SqlCommand cmd = new SqlCommand(sql, conn))
    {
          conn.Open();
          using (SqlDataReader reader = cmd.ExecuteReader())
          {
                while(reader.Read())
                {
                    listBox1.Items.Add(reader["description"].ToString() + ":    "+reader["price"].ToString());
                }
                reader.Close();                   
           }
           conn.Close();
     }

另外,要添加所有值,请使用while而不是if遍历阅读器中的所有记录。并在using语句后关闭连接。 我确信错误的序列导致了这个问题。

答案 1 :(得分:0)

我在这里对你的代码做了一些假设,'代码'是一个数字?如果没有,你试试了吗?

String sql = "SELECT * FROM products where code = '"+textBox1.Text+"'";