我的组合框需要显示数据库中的数据,但显示为空。 在这里你有我正在处理的代码,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);
}
}
}
答案 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响应的目的)。