1

我尝试在此代码中获取服务器中的 SQL 数据库的名称 我使用 sqldatasource 枚举器在名为 sever 的组合框中列出了我计算机中的所有 sql 实例现在我试图在另一个组合框中获取所有 sql 数据库名称的名称从服务器组合框中选择一个特定的 sql 实例,但它不起作用

    private void Connect_Load(object sender, EventArgs e)
    {
        sqlservertable = sqlenumeratotr.GetDataSources();

         server.DataSource = sqlservertable;

         server.DisplayMember = sqlservertable.Columns["servername"].ToString();
         server.ValueMember = sqlservertable.Columns["servername"].ToString();


    }

    private void server_SelectedIndexChanged(object sender, EventArgs e)
    {
        servername = server.SelectedValue.ToString();
        constring = "server=servername;Integrated Security = sspi";
        SqlConnection con = new SqlConnection(constring);

        con.Open();
        dbltables = con.GetSchema("Databases");



        con.Close();
        databases.DataSource = dbltables;
        databases.DisplayMember = dbltables.Columns["database_name"].ToString();
    }
4

2 回答 2

3

如果我正确理解了这个问题,我认为Heather的回答足以解决这个问题,我会稍微扩展一下。

您需要运行Heather提到的查询,然后将结果绑定到另一个 ComboBox。

private void server_SelectedIndexChanged(object sender, EventArgs e)
{
    string serverName = server.SelectedValue.ToString();
    string connString = string.Format("server={0};Integrated Security = sspi", serverName);
    using (var con = new SqlConnection(connString))
    {
        using (var da = new SqlDataAdapter("SELECT Name FROM master.sys.databases", con))
        {
            var ds = new DataSet();
            da.Fill(ds);
            databases.DataSource = ds.Tables[0].Rows.Select(x => x["Name"].ToString());
            //...
        }
    }
}
于 2012-11-13T15:33:59.410 回答
2
select name from master.sys.databases
于 2012-11-13T02:01:07.840 回答