我的组合框不显示数据库中的数据

时间:2015-07-01 15:18:40

标签: c# combobox

我的组合框需要显示数据库中的数据,但显示为空。 在这里你有我正在处理的代码,visual studio不显示任何错误,但是组合框显示为空,有任何​​提示吗?

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        {
            SqlConnection cn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=E:\Documents\basededadospap.mdf;Integrated Security=True;Connect Timeout=30");
            try
            {
                cn.Open();
                string query = "select * from fornecedor where nomefornecedor='" + comboBox1 + "'";
                SqlCommand createCommand = new SqlCommand(query, cn);
                SqlDataReader dr = createCommand.ExecuteReader();
                cn.Close();
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

ExecuteReader将返回一个阅读器,然后您必须使用该阅读器逐行回读结果,并相应地填充您的组合框。 例如,如果你的fornecedor表中有一个名为“MyItem”的(不可为空)字符串列,你可以这样写:

using (SqlDataReader dr = createCommand.ExecuteReader())
{
  int myItemOrdinal = dr.GetOrdinal("MyItem");
  List<object> comboBoxRows = new List<object>();
  while (dr.Read())
  {         
    string myItem = dr.GetString(myItemOrdinal);
    comboBoxRows.Add(myItem);
  }
}
comboBox1.BeginInvoke(() => comboBox1.Items.AddRange(comboBoxRows.ToArray()));

最后一行填充UI线程上的组​​合框,假设从另一个线程读取数据库中的行(这是您希望保持UI响应的目的)。