У меня есть два комбинированных списка, comboBoxSelectServer
и comboBoxSelectDatabase
.
На основе значения, выбранного в comboBoxSelectServer
, когда пользователь нажимает на comboBoxSelectDatabase
, они получат различные базы данных с этого сервера.
Однако при запуске приложения я не получаю никаких баз данных, возвращаемых в comboBoxSelectDatabase
.
Я думаю, что это связано с приведенным ниже разделом моего кода, поскольку при отладке он ничего не возвращает.
comboBoxSelectDatabase.Items.Add(command);
Я включил свой код ниже;
if (comboBoxSelectServer.SelectedIndex == 0)
{
string commandTextSERV1 = "SELECT name FROM master.sys.databases " +
"where name LIKE 'Client_%'";
string connectionString = Properties.Settings.Default.connectionStringSERV1;
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(commandTextSERV1, con);
try
{
con.Open();
command.ExecuteNonQuery();
SqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
comboBoxSelectDatabase.Items.Add(command);
}
else
{
MessageBox.Show("Error");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
}
@JayV Да, я думал то же самое ... но я не знаю, чем его заменить, чтобы вернуть список базы данных. Я пробовал несколько вариантов, но пока ничего не работает ..
Возьмите гугл executereader, там есть примеры
Проблема связана с вашим следующим утверждением. здесь вы добавляете объект команды вместо строк читателя.
comboBoxSelectDatabase.Items.Add(command);
Измените это на
while (reader.Read())
{
comboBoxSelectDatabase.Items.Add(Convert.ToString(reader["name"]));
}
Это должно заполнить поле со списком с именем базы данных.
comboBoxSelectDatabase.Items.Add(command);
неправильно, должно быть:
while (reader.Read())
{
comboBoxSelectDatabase.Items.Add(reader["name"].ToString());
}
Думаю, ваша проблема связана с
comboBoxSelectDatabase.Items.Add(command);
. Здесь вы добавляете объект SqlCommand, а не какой-либо из возвращенных DataRows в раскрывающийся список