web-dev-qa-db-fra.com

Comment obtenir la liste de toutes les bases de données du serveur SQL dans une liste déroulante à l'aide de c # .net

Je saisis le nom source userid et le mot de passe dans la zone de texte et je souhaite que la liste des bases de données soit répertoriée dans la liste déroulante afin que l'utilisateur puisse sélectionner les quatre options source, nomutilisateur, mot de passe et nom de la base de données pour effectuer la connexion

Les bases de données doivent être récupérées à partir d'un autre système selon l'utilisateur. L'utilisateur entrera l'adresse IP, l'ID utilisateur et le mot de passe et il devrait obtenir la liste de bases de données dans la liste déroulante afin de pouvoir sélectionner la base de données requise et effectuer la connectivité.

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

J'essaie de faire cela, mais cela ne génère aucune donnée

11
Ajit Nair

sys.databases

SELECT name
FROM sys.databases;

Modifier:

Je recommande d'utiliser IDataReader, de retourner une liste et de mettre en cache les résultats. Vous pouvez simplement lier votre liste déroulante aux résultats et extraire la même liste du cache si nécessaire.

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;

}
28
Chris Gessler

Commencez par ajouter les assemblages suivants:

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

de 

C:\Programmes\Microsoft SQL Server\100\SDK\Assemblies \

puis utilisez le code ci-dessous: 

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

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

vous pouvez utiliser l'une des requêtes suivantes:

  • EXEC sp_databases
  • SELECT * FROM sys.databases

Serge

3
Serge Bollaerts

En utilisant simplement la méthode GetSchema:

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

    //Get database name using dtDatabases["database_name"]
}
1
Minh Nguyen
    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];
    }
0
nznoor