15.9.1 DbProviderFactoryを使用したプロバイダに依存しないコードの作成方法
(1) プロバイダ情報の追加
DbProviderFactoryインスタンスをDbProviderFactoriesクラスのGetFactoryメソッドを呼び出して生成します。.NET Framework Version2.0/3.0のインストール時に,このメソッドに指定できるプロバイダ名は次の4種類です。
-
System.Data.Odbc
-
System.Data.OleDb
-
System.Data.OracleClient
-
System.Data.SqlClient
.NET Framework Version2.0/3.0のインストール時に組み込まれるmachine.configファイルについて,system.dataセクションのDbProviderFactories要素にプロバイダ情報を追加するとGetFactoryメソッドに指定できるようになります。
また,HiRDBデータプロバイダ for .NET Frameworkの場合,指定するinvariant値は"Hitachi.HiRDB"です。
HiRDBデータプロバイダ for .NET Frameworkの情報を追加する場合の例を次に示します。
-
プロバイダ情報の追加
<system.data> <DbProviderFactories> ・ ・ ・ <add name="HiRDB Data Provider" invariant="Hitachi.HiRDB" description=".NET Framework Data Provider for HiRDB" type="Hitachi.HiRDB.HiRDBProviderFactory, pddndp20, Version=X.X.X.X, Culture=neutral, PublicKeyToken=YYYYYYYYYYYYYYYY" /> </DbProviderFactories> </system.data>
- (凡例)
-
X.X.X.X:アセンブリのバージョン。アセンブリのバージョンは,pddndp20.dllのプロパティで確認できます。
YYYYYYYYYYYYYYYY:アセンブリ公開キートークン。アセンブリ公開キートークンは,コマンドプロンプト又はMS-DOSプロンプトから次のコマンドを入力することで確認できます。
sn -T pddndp20.dll
(2) 構成ファイルを使用したプロバイダ名の指定
プロバイダ名を構成ファイルに登録し,DbProviderFactoryインスタンス生成時に取得します。構成ファイルについては,.NET Frameworkのマニュアルを参照してください。
HiRDBデータプロバイダ for .NET Frameworkの場合,指定するプロバイダ名(value)は"Hitachi.HiRDB"です。なお,プロバイダ名をDbProviderFactoriesクラスのGetFactoryメソッドの引数に直接指定する場合,構成ファイルは不要です。
構成ファイルの例を次に示します。なお,キー名(provider)は任意の文字列です。
-
構成ファイルの例
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="provider" value="Hitachi.HiRDB" /> ...HiRDBデータプロバイダ for .NET Framework </appSettings> </configuration>
(3) DbProviderFactoryインスタンスの生成
(a) 構成ファイルを使用しない場合
プロバイダ名("Hitachi.HiRDB")をDbProviderFactoriesクラスのGetFactoryメソッドの引数に直接指定して,DbProviderFactoryインスタンスを生成します。コーディング例を次に示します。
DbProviderFactory dataFactory = DbProviderFactories.GetFactory("Hitachi.HiRDB");
(b) 構成ファイルを使用する場合
構成ファイルからキー名(provider)の値を取得し,その値をDbProviderFactoriesクラスのGetFactoryメソッドの引数に指定して,DbProviderFactoryインスタンスを生成します。コーディング例を次に示します。
DbProviderFactory dataFactory = DbProviderFactories.GetFactory(ConfigurationManager.AppSettings["provider"]);
(4) コーディング例
プロバイダに依存するプロバイダ名や接続文字列を構成ファイルから取得することによって,プログラムを変更することなく異なるプロバイダを使用できます。
構成ファイルを使用する場合のコーディング例を次に示します。