Не выводит информацию из БД в ComboBox C#(WPF)
Я пытаюсь получить данные из столбца навзаниеОтделов из таблицы Отделы в БД через C# используя библиотеку WPF и заполнить этими названиями 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();
}
Ответы (1 шт):
Автор решения: AlexanderSt
→ Ссылка
Я не вижу строки
SqlConnection sqlCnct = new SqlConnection(<connection_string>);
sqlCnct.Open();
если соединение с БД не открыто - в этом случае command.ExecuteReader()
не вернет ничего.
Поставьте breakpoint
на строку reader.Close();
и посмотрите в отладчике - попало ли что-нибудь в коллекцию Deportaments.Items
, ну или пошагово цикл while()
.