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
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;
}
Commencez par ajouter les assemblages suivants:
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);
}
vous pouvez utiliser l'une des requêtes suivantes:
EXEC sp_databases
SELECT * FROM sys.databases
Serge
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"]
}
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];
}