web-dev-qa-db-ja.com

SqlConnectionStringBuilderを使用して接続文字列からデータベース名を取得する方法

文字列操作を使用して接続文字列を分割し、サーバー、データベース、uid、およびパスワードを取得することはありません。

次のリンクを読んで、受け入れられた答えを読んで、それが接続文字列からユーザーIDとパスワードを取得する最良の方法であることがわかりましたが、データベース名はどうですか?

接続文字列からユーザー名とパスワードを取得する正しい方法?

SqlConnectionStringBuilderを使用して接続文字列からデータベース名を取得する方法。 (データソースはサーバー名ですか?)

81
Imran Rizvi

InitialCatalogプロパティのMSDNドキュメント を参照してください。

接続に関連付けられているデータベースの名前を取得または設定します...

このプロパティは、接続文字列内の「初期カタログ」および「データベース」キーに対応しています...

49
unarity

プロバイダー固有のConnectionStringBuilderクラス(適切なネームスペース内)を使用するか、必要に応じてSystem.Data.Common.DbConnectionStringBuilderを使用して接続文字列オブジェクトを抽象化できます。探している情報を指定するために使用されるプロバイダー固有のキーワードを知っている必要がありますが、SQL Serverの例では、次の2つのいずれかを実行できます。

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

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

または

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

より簡単な代替方法は、接続オブジェクト自体から情報を取得することです。例えば:

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

同様に、接続オブジェクトからサーバー名も取得できます。

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

これにより、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

データベース名は SqlConnectionStringBuilder.InitialCatalog propertyの値です。

5
Dennis

InitialCatalog Propertyまたはbuilder["Database"]も使用できます。別のケースでテストしましたが、まだ動作します。

4
Habib