WCF サービス モデルを使用した Oracle E-Business Suite での ExecuteReader、ExecuteScalar、または ExecuteNonQuery 操作
Oracle E-Business アダプターは、ExecuteNonQuery、ExecuteReader、ExecuteScalar などの汎用操作を公開します。 これらの操作を使用して、Oracle E-Business Suite で任意のステートメントを実行できます。 これらの操作は、 ステートメントに対して取得する応答の種類によって異なります。 アダプターがこれらの操作をサポートする方法の詳細については、「 ExecuteNonQuery、ExecuteReader、ExecuteScalar 操作のサポート」を参照してください。
このトピックでは、WCF サービス モデルを使用して Oracle E-Business アダプターを使用して ExecuteReader 操作を実行する方法について説明します。 このトピックで説明されているのと同じ手順のセットに従って、 ExecuteNonQuery および ExecuteScalar 操作を 実行できます。
このトピックで使用される例について
このトピックの例では、 ExecuteReader 操作を実行して、MS_SAMPLE_EMPLOYEE インターフェイス テーブルに対して SELECT 操作を実行します。 このテーブルは、サンプルで提供されているスクリプトを実行して作成されます。 サンプルの詳細については、「 Oracle EBS アダプターのサンプル」を参照してください。 このトピックに基づくサンプル ExecuteReader も、Oracle E-Business アダプターのサンプルと共に提供されています。
WCF クライアント クラス
Oracle E-Business アダプターを使用して汎用操作 (ExecuteNonQuery、ExecuteReader、または ExecuteScalar) を呼び出すための WCF クライアントの名前を次の表に示します。
Operations | WCF クライアント名 |
---|---|
ExecuteNonQuery、ExecuteReader、または ExecuteScalar | GenericOperation_Client |
ジェネリック操作を呼び出すためのメソッド シグネチャ
次の表は、ジェネリック操作を呼び出すために公開されるメソッドのシグネチャを示しています。
操作 | メソッド シグネチャ |
---|---|
ExecuteNonQuery | int ExecuteNonQuery(string Query, string[] OutputRefCursorNames, out System.Data.DataSet[] OutputRefCursors) |
ExecuteReader | System.Data.DataSet ExecuteReader(string Query) |
ExecuteScalar | string ExecuteScalar(string Query) |
たとえば、ジェネリック操作メソッドのシグネチャを次のコード スニペットに示します。
public partial class GenericOperation_Client : System.ServiceModel.ClientBase<GenericOperation_>, GenericOperation_ {
public int ExecuteNonQuery(string Query, string[] OutputRefCursorNames, out System.Data.DataSet[] OutputRefCursors);
public System.Data.DataSet ExecuteReader(string Query);
public string ExecuteScalar(string Query);
}
このスニペットでは、
GenericOperation_Client
は クラスの名前です。 このクラスは、汎用操作 ExecuteReader を呼び出すクライアントを作成するために使用されます。public System.Data.DataSet ExecuteReader(string Query)
は、MS_SAMPLE_EMPLOYEE インターフェイス テーブルに対して SELECT ステートメントを実行するために呼び出すメソッドです。
ExecuteReader 操作を呼び出す WCF クライアントの作成
WCF クライアントを使用して Oracle E-Business Suite で操作を実行するために必要な一連の一般的なアクションには、「 Oracle E-Business Suite アダプターを使用した WCF サービス モデルの概要」で説明されている一連のタスクが含まれます。 このセクションでは、 ExecuteReader 操作を呼び出す WCF クライアントを作成する方法について説明します。
ExecuteReader 操作を呼び出す WCF クライアントを作成するには
Visual Studio で Visual C# プロジェクトを作成します。 このトピックでは、コンソール アプリケーションを作成します。
ExecuteReader ジェネリック操作の WCF クライアント クラスを生成します。 この操作は、アダプター サービス参照プラグインの追加を使用して Oracle E-Business Suite に接続するときに、ルート ノードで使用できます。 WCF クライアント クラスの生成の詳細については、「 Oracle E-Business Suite ソリューション成果物の WCF クライアントまたは WCF サービス コントラクトを生成する」を参照してください。
重要
WCF クライアント クラスを生成する前に、 EnableBizTalkCompatibilityMode バインド プロパティを false に設定してください。
ソリューション エクスプローラーで、 と
Microsoft.ServiceModel.Channels
への参照をMicrosoft.Adapters.OracleEBS
追加します。Program.cs ファイルを開き、次の名前空間を追加します。
Microsoft.Adapters.OracleEBS
System.ServiceModel
Program.cs ファイルで、以下のスニペットで説明するようにクライアントを作成します。
OracleEBSBinding binding = new OracleEBSBinding(); EndpointAddress address = new EndpointAddress("oracleebs://ebs-72-11"); GenericOperation_Client client = new GenericOperation_Client(binding, address);
このスニペットでは、
GenericOperation_Client
は OracleEBSBindingClient.cs で定義されている WCF クライアントです。 このファイルは、アダプター サービス参照の追加プラグインによって生成されます。Note
このスニペットでは、アプリケーション コードでバインディングとエンドポイント アドレスを明示的に指定します。 これらの値は、アダプター サービス参照の追加プラグインによって生成されたアプリケーション構成ファイル app.config から使用できます。 クライアント バインドを指定するさまざまな方法の詳細については、「 Oracle E-Business Suite のクライアント バインドを構成する」を参照してください。
クライアントの資格情報を設定します。
client.ClientCredentials.UserName.UserName = "myuser"; client.ClientCredentials.UserName.Password = "mypassword";
インターフェイス テーブルに対して操作を実行するため、アプリケーション コンテキストを設定する必要があります。 この例では、アプリケーション コンテキストを設定するために、 OracleUserName、 OraclePassword、 OracleEBSResponsibilityName バインディング プロパティを指定します。 アプリケーション コンテキストの詳細については、「アプリケーション コンテキストの設定」を参照してください。
binding.OracleUserName = "myOracleEBSUserName"; binding.OraclePassword = "myOracleEBSPassword"; binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";
次のスニペットで説明されているように、クライアントを開きます。
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }
テーブルに対して SELECT 操作を実行するために ExecuteReader 操作MS_SAMPLE_EMPLOYEE呼び出します。 ExecuteReader 操作を呼び出す前に、名前空間を
System.Data
コードに追加する必要があります。string query = "SELECT * FROM MS_SAMPLE_EMPLOYEE"; DataSet ds = client.ExecuteReader(query); Console.WriteLine("Invoking the SELECT statement using ExecuteReader"); Console.WriteLine("*****************************************************"); foreach (DataTable tab in ds.Tables) { foreach (DataRow row in tab.Rows) { Console.WriteLine("The details of the employee are: "); for (int i = 0; i < tab.Columns.Count; i++) { Console.WriteLine(row[i]); } Console.WriteLine(); } } Console.WriteLine("*****************************************************"); Console.ReadLine();
次のスニペットで説明されているように、クライアントを閉じます。
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();
プロジェクトをビルドし、実行します。 MS_SAMPLE_EMPLOYEE テーブル内のすべてのレコードがコンソールに表示されます。