我目前正在做一个图书管理项目,我正在使用Visual Studio的SQL Server。我在数据库中有一个图书类别表,我试图将它放在一个组合框中。
这是代码-我看不出有什么问题,但类别需要这么长的时间才能在组合框中可见。
还有,列表是重复的,可能是因为while
循环吗?如果是这样,有没有办法修复它?
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
con.ConnectionString = (@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\malek\source\repos\BookStore\BookStore\BOOKDB.mdf;Integrated Security=True");
scmd.Connection = con;
con.Open();
scmd.CommandText = "SELECT CATEGORY FROM BOOKCAT";
var rd = scmd.ExecuteReader();
while (rd.Read())
{
List.Add(Convert.ToString(rd[0]));
}
int i = 0;
while (i < List.LongCount())
{
comboBox1.Items.Add(List[i]);
i = i + 1;
}
}
catch (Exception EX)
{
MessageBox.Show(EX.Message);
}
finally
{
con.Close();
}
}
我错过了什么?
注意:我没有收到任何错误!!
2条答案
按热度按时间sf6xfgos1#
数据绑定是什么意思?
就像这样
而当你想要的东西用户选择:
简单吧?
如果使用强类型数据集,则会更容易;为此,您只需向项目中添加一个新的DataSet类型文件(必须使用Net Framework,而不是Net Core/5+),将数据库拖到数据集中,向获取不同类别的TableAdapter类别添加一个查询(如上所述),然后打开数据源窗口,将Category更改为组合并将其标记到窗体上。vs将全部写入
pkln4tw62#
根据您发布的代码,您似乎正在
comboBox1
的SelectedIndexChanged
事件中从数据库加载类别。因此,每次从
comboBox1
中选择一个新项时,都要执行以下代码;您将进入数据库,从BOOKCAT
表中加载所有内容,并将这些内容放入List
和comboBox1
中。这就是为什么您会看到重复的类别,也可能是为什么一个类别在ComboBox
中要花这么长时间才能显示。您可能不希望每次选定的索引更改时都从数据库加载
ComboBox
项,因此您应该在其他地方执行此操作。例如,您可以在Form
的构造函数中或在'Load' event中执行此操作。