C#返回Combobox中的数据库列表

时间:2018-05-01 10:20:21

标签: c# sql database winforms combobox

我有两个组合框,comboBoxSelectServercomboBoxSelectDatabase

根据用户点击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();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

comboBoxSelectDatabase.Items.Add(command);

错了,应该是:

while (reader.Read())
{
    comboBoxSelectDatabase.Items.Add(reader["name"].ToString());
}

答案 1 :(得分:0)

问题与您的以下声明有关。在这里,您要添加命令对象,而不是读取器行。

comboBoxSelectDatabase.Items.Add(command);

将其更改为

while (reader.Read())
{
    comboBoxSelectDatabase.Items.Add(Convert.ToString(reader["name"]));
}

这应该使用数据库名称填充combox。