1

例えば。

ConnectionDetails cd = new ConnectionDetails ();
cd.ProviderName = "System.Data.OleDb";
cd.DataSource = "serverAddress";
cd.Catalog = "database";
cd.UserId = "userId";
cd.Password = "password";

string connectionString = cs.CreateConnectionString();
// Should return:
// "Provider=SQLOLEDB;Data Source=serverAddress;Initial Catalog=database;User Id=userId;Password=password;"

独自のクラスを作成しますが、不変の db プロバイダー名 (System.Data.OleDb) から接続文字列プロバイダー プロパティ (この例では SQLOLEDB) をプログラムで取得する方法がわかりません。

編集:

あなたはすることができます

DbProviderFactories.GetFactory("System.Data.OleDB").CreateConnectionStringBuilder()

ただし、返される DBConnectionStringBuilder は、この場合、派生クラスに "Provider" プロパティがありますが、それが接続文字列プロバイダー プロパティであることを認識していません。

4

2 に答える 2

2

私が知っている最も近いものはDbConnectionStringBuilderです。

プロバイダーごとに必要なプロパティが異なるため、固定プロパティではなく、連想配列 (名前と値のコレクション) を使用します。

だからあなたの例は次のようになります

DbConnectionStringBuilder csb = new DbConnectionStringBuilder();
csb["ProviderName"] = "System.Data.OleDb";
csb["DataSource"] = "serverAddress";
csb["Catalog"] = "database";
csb["UserId"] = "userId";
csb["Password"] = "password";

string connectionString = csb.ConnectionString;
于 2008-10-10T15:40:31.813 に答える
0

接続文字列を作成するOleDbConnectionStringBuilderクラスがあります。

しかし、プロバイダー名を生成するために取得しようとしているようです。実際にはそのようには機能しないと思います。プロバイダー名はさまざまである可​​能性があるため、接続に何をするかを指示するために提供する必要があります。データベース接続を選択するために(または、そのルートを使用する場合はデータベース接続ファクトリメソッドを駆動するために)使用しているメカニズムが何であれ、プロバイダー名も提供する必要があります。

于 2008-10-10T21:17:22.803 に答える