114 votes

Comment obtenir le nom de la base de données à partir de la chaîne de connexion en utilisant SqlConnectionStringBuilder ?

Je ne veux pas diviser les chaînes de connexion en utilisant des fonctions de manipulation de chaînes pour obtenir le serveur, la base de données, le nom d'utilisateur et le mot de passe.

J'ai lu le lien suivant et la réponse acceptée, j'ai trouvé que c'était la meilleure façon de récupérer le nom d'utilisateur et le mot de passe de la chaîne de connexion, mais qu'en est-il du nom de la base de données ?

Comment récupérer le nom d'utilisateur et le mot de passe à partir de la chaîne de connexion ?

Comment obtenir le nom de la base de données à partir de la chaîne de connexion en utilisant SqlConnectionStringBuilder. (est-ce que le DataSource est le nom du serveur ?)

178voto

Romil Points 10066

Vous pouvez utiliser la classe ConnectionStringBuilder spécifique au fournisseur (dans l'espace de noms approprié), ou bien System.Data.Common.DbConnectionStringBuilder pour abstraire l'objet chaîne de connexion si nécessaire. Vous devez connaître les mots-clés spécifiques au fournisseur utilisés pour désigner les informations que vous recherchez, mais pour un exemple de SQL Server, vous pouvez faire l'une ou l'autre de ces deux choses :

System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);

string server = builder.DataSource;
string database = builder.InitialCatalog;

ou

System.Data.Common.DbConnectionStringBuilder builder = new System.Data.Common.DbConnectionStringBuilder();

builder.ConnectionString = connectionString;

string server = builder["Data Source"] as string;
string database = builder["Initial Catalog"] as string;

55voto

unarity Points 702

Véase Documentation MSDN pour la propriété InitialCatalog :

Obtient ou définit le nom de la base de données associée à la connexion...

Cette propriété correspond aux clés "Initial Catalog" et "database" de la chaîne de connexion...

42voto

nawfal Points 13500

Une alternative beaucoup plus simple consiste à obtenir les informations à partir de l'objet de connexion lui-même. Par exemple :

IDbConnection connection = new SqlConnection(connectionString);
var dbName = connection.Database;

De même, vous pouvez obtenir le nom du serveur à partir de l'objet de connexion.

DbConnection connection = new SqlConnection(connectionString);
var server = connection.DataSource;

13voto

string connectString = "Data Source=(local);" + "Integrated Security=true";

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

Console.WriteLine("builder.InitialCatalog = " + builder.InitialCatalog);

7voto

pvaju896 Points 527

Vous obtenez ainsi le Xact ;

System.Data.SqlClient.SqlConnectionStringBuilder connBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder();

connBuilder.ConnectionString = connectionString;

string server = connBuilder.DataSource;           //-> this gives you the Server name.
string database = connBuilder.InitialCatalog;     //-> this gives you the Db name.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X