[この記事は19年前に書かれました]
汎用的なクラスを使用していても、データプロバイダ固有の処理を呼びたい場合もあります。 この場合は、固有の処理を呼ぶ箇所だけそのクラスにキャストしてやることで そのデータプロバイダ固有の処理を呼ぶことができます。
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新機能


コメント