如何使用C#.NET摆脱在组合框中的SQL Server的所有数据库的列表(How to get l

2019-08-03 12:17发布

我进入通过文本框的源名用户名和密码,并希望数据库名单应在组合框中列出,以便所有的四个选项SOURCENAME,用户ID,密码和数据库名称,可以通过进行连接的用户选择

该数据库是从其它系统中检索按照用户。 用户将进入IP,用户名和密码,他们应该在组合框中的数据库列表,以便他们可以选择所需的数据库并进行连接

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);
        }
    }

我想这样做,但它不产生任何数据

Answer 1:

sys.databases中

SELECT name
FROM sys.databases;

编辑:

我推荐使用的IDataReader,返回一个列表和缓存结果。 您可以简单地滴下来绑定的结果,并在需要时从缓存中检索相同的列表。

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;

}


Answer 2:

首先添加以下组件:

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

C:\ Program Files文件\ Microsoft SQL Server的\ 100个\ SDK \组件\

然后用下面的代码:

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

foreach (Database db in server.Databases) {
    cboDBs.Items.Add(db.Name);
}


Answer 3:

您可以在下面的查询使用:

  • EXEC sp_databases
  • SELECT * FROM sys.databases

哔叽



Answer 4:

只需用GetSchema方法:

using (SqlConnection connection = GetConnection())
{
    connection.Open();
    DataTable dtDatabases = connection.GetSchema("databases");

    //Get database name using dtDatabases["database_name"]
}


Answer 5:

    using (var connection = new System.Data.SqlClient.SqlConnection("ConnectionString"))
    {
        connection.Open();
        var command = new System.Data.SqlClient.SqlCommand();
        command.Connection = connection;
        command.CommandType = CommandType.Text;
        command.CommandText = "SELECT name FROM master.sys.databases";

        var adapter = new System.Data.SqlClient.SqlDataAdapter(command);
        var dataset = new DataSet();
        adapter.Fill(dataset);
        DataTable dtDatabases = dataset.Tables[0];
    }


文章来源: How to get list of all database from sql server in a combobox using c#.net