Как получить список всех баз данных из sql server в combobox, используя c#.net

Я ввожу имя источника userid и пароль через текстовое поле и хочу, чтобы список базы данных был указан в поле со списком, чтобы все четыре параметра sourcename, userid, password и databasename могли быть выбраны Пользователем для выполнения подключения

базы данных должны быть извлечены из другой системы в соответствии с пользователем. Пользователь вводит IP, userid и пароль, и они должны получить список базы данных в поле со списком, чтобы они могли выбрать необходимый база данных и выполнить подключение

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

Я пытаюсь сделать это, но он не генерирует никаких данных

5 ответов


sys.базы данных

SELECT name
FROM sys.databases;

Edit:

Я рекомендую использовать 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;

}

добавить следующие сборки:

  • Microsoft.От SQLServer.ConnectionInfo.dll файлы
  • Microsoft.От SQLServer.Управление.пакет SDK.Sfc.dll
  • Microsoft.От SQLServer.модель SMO.dll файлы

С

C:\Program файлы\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);
}

вы можете использовать один из следующих запросов:

  • EXEC sp_databases
  • SELECT * FROM sys.databases

Серега


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

просто используя GetSchema способ:

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

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