我试图使用WPF 库通过 C#从数据库中的Departments表的Departments列中获取数据,并使用这些名称填充 ComboBox,但最终我的 ComboBox 为空:
代码:
private void FillComboBox()
{
try
{
// Запрос для выборки
string sqlCommand = "SELECT названиеОтдела FROM Отделы";
// Создание команды для выполнения запроса
SqlCommand command = new SqlCommand(sqlCommand, sqlCnct);
// Выполнение запроса и получение результата
SqlDataReader reader = command.ExecuteReader();
// Очистка ComboBox перед добавлением новых значений
Deportaments.Items.Clear();
// Добавление значений в ComboBox
while (reader.Read())
{
Deportaments.Items.Add(reader["названиеОтдела"].ToString());
}
// Закрытие ридера
reader.Close();
}
catch (Exception ex)
{
// Обработка исключений, если не удалось выполнить запрос
MessageBox.Show("Ошибка при заполнении ComboBox: " + ex.Message);
}
}
// Вызов FillComboBox() в методе Window_Loaded
private void Window_Loaded(object sender, RoutedEventArgs e)
{
FillComboBox();
}
怎么了 ?
添加:
private void FillComboBox()
{
try
{
// Проверка, что соединение с базой данных открыто
if (sqlCnct.State != ConnectionState.Open)
{
sqlCnct.Open();
}
// Запрос для выборки названий отделов
string sqlCommand = "SELECT названиеОтдела FROM Отделы";
// Создание команды для выполнения запроса
SqlCommand command = new SqlCommand(sqlCommand, sqlCnct);
// Выполнение запроса и получение результата
SqlDataReader reader = command.ExecuteReader();
// Очистка ComboBox перед добавлением новых значений
Deportaments.Items.Clear();
// Добавление значений в ComboBox
/* while (reader.Read())4eeeee
{
Deportaments.Items.Add(reader["названиеОтдела"].ToString());
}*/
Deportaments.Items.Add("Один");
Deportaments.Items.Add("Два");
Deportaments.Items.Add("Три");
// Закрытие ридера
// reader.Close();
}
catch (Exception ex)
{
// Обработка исключений, если не удалось выполнить запрос
MessageBox.Show("Ошибка при заполнении ComboBox: " + ex.Message);
}
finally
{
// Убедимся, что соединение с базой данных закрыто после использования
if (sqlCnct.State == ConnectionState.Open)
{
sqlCnct.Close();
}
}
}
// Вызов FillComboBox() в методе Window_Loaded
private void Window_Loaded(object sender, RoutedEventArgs e)
{
FillComboBox();
}
我没看到那条线
如果与数据库的连接未打开,在这种情况下
command.ExecuteReader()
它将不会返回任何内容。将其放在
breakpoint
一行上reader.Close();
,然后在调试器中查看集合Deportaments.Items
或逐步循环中是否包含任何内容while()
。