2012-05-11 14 views
67

abgerufen werden Ich möchte nie Verbindungszeichenfolge mit Zeichenfolge bearbeiten und Server, Datenbank, UID und Kennwort abrufen.Wie Datenbankname aus Verbindungszeichenfolge mit SqlConnectionStringBuilder

Ich lese den folgenden Link und lese die akzeptierte Antwort, ich fand, das ist der beste Weg, um Benutzer-ID und Passwort aus Verbindungszeichenfolge, aber was ist mit Datenbank-Name?

Right way to get username and password from connection string?

Wie Datenbankname von Connection String mit SqlConnectionStringBuilder zu bekommen. (Ist die Datasource ist der Server-Name?)

Antwort

3

Sie können InitialCatalog Eigenschaft oder builder["Database"] funktioniert auch verwenden. Ich habe es mit verschiedenen Fällen getestet und es funktioniert immer noch.

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

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString); 

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

Sie können die providerspezifischen ConnectionStringBuilder Klasse verwenden (im entsprechenden Namespace) oder System.Data.Common.DbConnectionStringBuilder abstrahieren die Verbindung String-Objekt, wenn Sie benötigen. Sie müssten die Provider-spezifischen Keywords verwendet wissen um die Informationen zu bezeichnen, die Sie suchen, aber für einen SQL Server Beispiel könnten Sie eine dieser beiden Dinge tun:

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

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

oder

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; 
+1

Für mich ist die letzte Zeile erforderlich sein: 'String database = Builder [ "Initial Catalog"] als string;' - "Datenbank" war ein ungültiges Schlüsselwort. – Sandra

+0

@Sandra ja ur richtig. Builder ["Database"] als String wird funktionieren, wenn wir SqlConnectionStringBuilder verwenden. –

4

Dies gibt Ihnen das 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. 
20

Eine viel einfachere Alternative ist, die Informationen aus dem Verbindungsobjekt selbst zu erhalten. Zum Beispiel:

In ähnlicher Weise können Sie den Servernamen auch aus dem Verbindungsobjekt abrufen.

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

Das ist, was ich gesucht habe. Vielen Dank. –

+0

Dies wird spezifisch für 'SqlConnection'. Gibt es einen ähnlichen Ausweg, um RDBMS zu kreuzen? –

+0

@AmitJoshi Sollten nicht alle 'IDbConnection' implementieren? – nawfal

Verwandte Themen