[この記事は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新機能
コメント