使用 WCF 服务模型的 Oracle 电子商务套件中的 ExecuteReader、ExecuteScalar 或 ExecuteNonQuery 操作

Oracle 电子商务适配器公开常规操作,例如 ExecuteNonQueryExecuteReaderExecuteScalar。 可以使用这些操作在 Oracle 电子商务套件上执行任何语句。 这些操作因语句的响应类型而异。 有关适配器如何支持这些操作的详细信息,请参阅 对 ExecuteNonQuery、ExecuteReader 和 ExecuteScalar 操作的支持

本主题演示如何使用 WCF 服务模型通过 Oracle 电子商务适配器执行 ExecuteReader 操作。 可以按照本主题中所述的同一组过程来执行 ExecuteNonQueryExecuteScalar 操作。

关于本主题中使用的示例

本主题中的示例执行 ExecuteReader 操作以对MS_SAMPLE_EMPLOYEE接口表执行 SELECT 操作。 表是通过运行示例提供的脚本创建的。 有关示例的详细信息,请参阅 Oracle EBS 适配器的示例。 基于本主题的示例 ExecuteReader 也随 Oracle 电子商务适配器示例一起提供。

WCF 客户端类

下表列出了为使用 Oracle 电子商务适配器 (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 (字符串查询)
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 语句的方法。

创建 WCF 客户端以调用 ExecuteReader 操作

使用 WCF 客户端在 Oracle 电子商务套件上执行操作所需的通用操作集涉及 使用 Oracle 电子商务套件适配器的 WCF 服务模型概述中所述的一组任务。 本部分介绍如何创建 WCF 客户端以调用 ExecuteReader 操作。

创建 WCF 客户端以调用 ExecuteReader 操作

  1. 在 Visual Studio 中创建 Visual C# 项目。 对于本主题,请创建控制台应用程序。

  2. ExecuteReader 泛型操作生成 WCF 客户端类。 使用“添加适配器服务引用”插件连接到 Oracle 电子商务套件时,可在根节点下执行此操作。 有关生成 WCF 客户端类的详细信息,请参阅 为 Oracle 电子商务套件解决方案项目生成 WCF 客户端或 WCF 服务协定

    重要

    在生成 WCF 客户端类之前,请确保将 EnableBizTalkCompatibilityMode 绑定属性设置为 false。

  3. 在解决方案资源管理器,添加对 和 Microsoft.ServiceModel.ChannelsMicrosoft.Adapters.OracleEBS引用。

  4. 打开 Program.cs 文件并添加以下命名空间:

    • Microsoft.Adapters.OracleEBS

    • System.ServiceModel

  5. 在 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 客户端。 此文件由添加适配器服务引用插件生成。

    注意

    在此代码片段中,在应用程序代码中显式指定绑定和终结点地址。 可以使用应用程序配置文件(app.config)中的这些值,这些值也由添加适配器服务引用插件生成。 有关指定客户端绑定的不同方法的详细信息,请参阅 为 Oracle E-Business Suite 配置客户端绑定

  6. 设置客户端的凭据。

    client.ClientCredentials.UserName.UserName = "myuser";  
    client.ClientCredentials.UserName.Password = "mypassword";  
    
  7. 由于正在对接口表执行操作,因此必须设置应用程序上下文。 在此示例中,若要设置应用程序上下文,请指定 OracleUserNameOraclePasswordOracleEBSResponsibilityName 绑定属性。 有关应用程序上下文的详细信息,请参阅 设置应用程序上下文

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  8. 打开客户端,如以下代码片段中所述:

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  9. 调用 ExecuteReader 操作以对MS_SAMPLE_EMPLOYEE表执行 SELECT 操作。 在调用 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();  
    
    
  10. 关闭客户端,如以下代码片段中所述:

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  11. 生成项目,然后运行它。 MS_SAMPLE_EMPLOYEE表中的所有记录都显示在主机上。

另请参阅

使用 WCF 服务模型开发 Oracle 电子商务套件应用程序