汎用的なコードでデータベースアクセス(一部、データプロバイダ固有処理)

C#

[この記事は17年前に書かれました]

汎用的なクラスを使用していても、データプロバイダ固有の処理を呼びたい場合もあります。 この場合は、固有の処理を呼ぶ箇所だけそのクラスにキャストしてやることで そのデータプロバイダ固有の処理を呼ぶことができます。

using System.Configuration;
using System.Data.Common;
using Oracle.DataAccess.Client;
...

ConnectionStringSettings setting = System.Configuration.ConfigurationManager.ConnectionStrings["OracleTest2"];
DbProviderFactory factory = DbProviderFactories.GetFactory(setting.ProviderName);

using (DbConnection con = factory.CreateConnection())
{
  con.ConnectionString = setting.ConnectionString;
  con.Open();

  try
  {
    using (DbCommand cmd = con.CreateCommand())
    {
      // コマンドオブジェクトをOracleCommandにキャスト
      OracleCommand oracleCmd = (OracleCommand)cmd;
      // 名前指定パラメータを有効
      oracleCmd.BindByName = true;

      // アクセス処理
    }
  }
  finally
  {
    if (con != null)
    {
      con.Close();
    }
  }
}


(※).NET Framework version 2.0新機能

コメント

タイトルとURLをコピーしました