如何使用c#.net从组合框中获取sql server中所有数据库的列表

Aji*_*air 13 c# sql-server-2008

我通过文本框输入源名称userid和密码,并希望数据库列表应该在组合框中列出,以便用户可以选择所有四个选项sourcename,userid,password和databasename来执行连接

将根据用户从其他系统检索数据库.用户将输入IP,用户ID和密码,他们应该在组合框中获取数据库列表,以便他们可以选择所需的数据库并执行连接

private void frmConfig_Load(object sender, EventArgs e)
{
        try
        {
            string Conn = "server=servername;User Id=userid;" + "pwd=******;";
            con = new SqlConnection(Conn);
            con.Open();

            da = new SqlDataAdapter("SELECT * FROM sys.database", con);
            cbSrc.Items.Add(da);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我试图这样做,但它没有生成任何数据

Chr*_*ler 30

sys.databases中

SELECT name
FROM sys.databases;
Run Code Online (Sandbox Code Playgroud)

编辑:

我建议使用IDataReader,返回List并缓存结果.您可以简单地将下拉列表绑定到结果,并在需要时从缓存中检索相同的列表.

public List<string> GetDatabaseList()
{
    List<string> list = new List<string>();

    // Open connection to the database
    string conString = "server=xeon;uid=sa;pwd=manager; database=northwind";

    using (SqlConnection con = new SqlConnection(conString))
    {
        con.Open();

        // Set up a command with the given query and associate
        // this with the current connection.
        using (SqlCommand cmd = new SqlCommand("SELECT name from sys.databases", con))
        {
            using (IDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    list.Add(dr[0].ToString());
                }
            }
        }
    }
    return list;

}
Run Code Online (Sandbox Code Playgroud)


Ami*_*mir 7

首先添加以下程序集:

  • Microsoft.SqlServer.ConnectionInfo.dll
  • Microsoft.SqlServer.Management.Sdk.Sfc.dll
  • Microsoft.SqlServer.Smo.dll

C:\ Program Files\Microsoft SQL Server\100\SDK\Assemblies \

然后使用下面的代码:

var server = new Microsoft.SqlServer.Management.Smo.Server("Server name");

foreach (Database db in server.Databases) {
    cboDBs.Items.Add(db.Name);
}
Run Code Online (Sandbox Code Playgroud)