100

サーバー、データベース、ユーザー名、およびパスワードを取得するために文字列操作関数を使用して接続文字列を分割したくありません。

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

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

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

4

7 に答える 7

164

プロバイダー固有の 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;
于 2012-05-11T11:45:05.007 に答える
53

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

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

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

于 2012-05-11T11:34:53.570 に答える
12
string connectString = "Data Source=(local);" + "Integrated Security=true";

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

Console.WriteLine("builder.InitialCatalog = " + builder.InitialCatalog);
于 2012-05-11T11:42:50.980 に答える
7

これで 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.
于 2012-05-11T11:49:03.173 に答える
5

データベース名はSqlConnectionStringBuilder.InitialCatalogプロパティの値です。

于 2012-05-11T11:34:54.163 に答える
4

InitialCatalogプロパティを使用することbuilder["Database"]も、同様に機能することもできます。別のケースでテストしましたが、それでも動作します。

于 2012-05-11T11:39:25.777 に答える