スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
ADO.NET2.0では,DbProviderFactoryインスタンスによって,CommandやParameterなどのほかのクラスのインスタンスを生成できるようになりました。プロバイダの名前空間を示す文字列(以降,プロバイダ名と呼びます)を指定してDbProviderFactoryインスタンスを生成すると,あらかじめ提供されている情報に基づいて各プロバイダに特化したインスタンスを生成できます。なお,指定するプロバイダ名は構成ファイルに登録し,取得できます。これによって,プロバイダに依存しないコードを作成し,実行時にプロバイダを選択できます。
DbProviderFactoryインスタンスをDbProviderFactoriesクラスのGetFactoryメソッドを呼び出して生成します。.NET Framework Version2.0/3.0のインストール時に,このメソッドに指定できるプロバイダ名は次の4種類です。
.NET Framework Version2.0/3.0のインストール時に組み込まれるmachine.configファイルについて,system.dataセクションのDbProviderFactories要素にプロバイダ情報を追加するとGetFactoryメソッドに指定できるようになります。
また,HiRDB.NETデータプロバイダの場合,指定するinvariant値は"Hitachi.HiRDB"です。
HiRDB.NETデータプロバイダの情報を追加する場合の例を次に示します。
<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> |
プロバイダ名を構成ファイルに登録し,DbProviderFactoryインスタンス生成時に取得します。構成ファイルについては,.NET Frameworkのマニュアルを参照してください。
HiRDB.NETデータプロバイダの場合,指定するプロバイダ名(value)は"Hitachi.HiRDB"です。なお,プロバイダ名をDbProviderFactoriesクラスのGetFactoryメソッドの引数に直接指定する場合,構成ファイルは不要です。
構成ファイルの例を次に示します。なお,キー名(provider)は任意の文字列です。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="provider" value="Hitachi.HiRDB" /> ...HiRDB.NETプロバイダ </appSettings> </configuration> |
プロバイダ名("Hitachi.HiRDB")をDbProviderFactoriesクラスのGetFactoryメソッドの引数に直接指定して,DbProviderFactoryインスタンスを生成します。コーディング例を次に示します。
DbProviderFactory dataFactory = DbProviderFactories.GetFactory("Hitachi.HiRDB"); |
構成ファイルからキー名(provider)の値を取得し,その値をDbProviderFactoriesクラスのGetFactoryメソッドの引数に指定して,DbProviderFactoryインスタンスを生成します。コーディング例を次に示します。
DbProviderFactory dataFactory = DbProviderFactories.GetFactory(ConfigurationManager.AppSettings["provider"]); |
プロバイダに依存するプロバイダ名や接続文字列を構成ファイルから取得することによって,プログラムを変更することなく異なるプロバイダを使用できます。
構成ファイルを使用する場合のコーディング例を次に示します。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.