プロバイダー名に基づいて DbConnection を構築するにはどうすればよいですか?
プロバイダー名の例
- System.Data.SqlClient
- System.Data.OleDb
- System.Data.Odbc
- FirebirdSql.Data.FirebirdClient
IIS サーバーの web.config ファイルに接続文字列が保存されています。
<connectionStrings>
<add name="development"
connectionString="Provider = IBMDA400; Data Source = MY_SYSTEM_NAME; User Id = myUsername; Password = myPassword;"
providerName="System.Data.OleDb" />
<add name="live"
connectionString="usd=sa;pwd=password;server=deathstar;"
providerName="System.Data.Odbc" />
<add name="testing"
connectionString="usd=sa;pwd=password;server=deathstar;"
providerName="System.Data.SqlClient" />
<add name="offline"
connectionString="Server=localhost;User=SYSDBA;Password=masterkey;Charser=NONE;Database=c:\data\mydb.fdb"
providerName="FirebirdSql.Data.FirebirdClient"/>
それらがすべて異なるプロバイダーを使用していることがわかります。接続を作成するときが来たら、作成する DbConnection の種類を知る必要があります。
- SqlConnection
- OleDbConnection
- Odbc接続
- Fb接続
connectionStrings エントリにはproviderNameが含まれていますが、これらは DbConnection の子孫クラスの名前ではなく、名前空間のようです
文字列providerNameに基づいて DbConnection を構築するにはどうすればよいですか?
public DbConnection GetConnection(String connectionName)
{
//Get the connectionString infomation
ConnectionStringSettings cs =
ConfigurationManager.ConnectionStrings[connectionName];
if (cs == null)
throw new ConfigurationException("Invalid connection name \""+connectionName+"\");
//Create a connection based on the provider
DbConnection conn = new DbConnection();
}