web-dev-qa-db-fra.com

Comment obtenir le nom de la base de données à partir de la chaîne de connexion à l'aide de SqlConnectionStringBuilder

Je ne veux jamais diviser la chaîne de connexion en utilisant la manipulation de chaîne et obtenir le serveur, la base de données, l'ID utilisateur et le mot de passe.

J'ai lu le lien suivant et lu la réponse acceptée. J'ai trouvé que c'était le meilleur moyen de faire sortir l'ID 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?

bonne façon d'obtenir le nom d'utilisateur et le mot de passe de la chaîne de connexion?

Comment obtenir le nom de la base de données à partir de la chaîne de connexion à l'aide de SqlConnectionStringBuilder. (la source de données est-elle le nom du serveur?)

81
Imran Rizvi

Voir 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 "Catalogue initial" et "base de données" de la chaîne de connexion ...

49
unarity

Vous pouvez utiliser la classe ConnectionStringBuilder spécifique au fournisseur (dans l’espace de nom approprié) ou System.Data.Common.DbConnectionStringBuilder pour résumer l’objet chaîne de connexion si vous en avez besoin. 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 SQL Server, vous pouvez effectuer l'une des opérations suivantes:

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;
131
Romil Kumar Jain

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

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

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

DbConnection connection = new SqlConnection(connectionString);
var server = connection.DataSource;
28
nawfal
string connectString = "Data Source=(local);" + "Integrated Security=true";

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

Console.WriteLine("builder.InitialCatalog = " + builder.InitialCatalog);
11
Kishore Kumar

cela vous donne 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.
6
pvaju896

Le nom de la base de données est une valeur de la propriété SqlConnectionStringBuilder.InitialCatalog .

5
Dennis

Vous pouvez utiliser InitialCatalog Property ou builder["Database"] fonctionne également. Je l'ai testé avec différents cas et cela fonctionne toujours.

4
Habib