使用 EXECQUERY 命令执行 SAP 查询

mySAP Business Suite .NET Framework数据提供程序将 SAP 系统公开为 ADO.NET 数据源。 使用适用于 SAP 的数据提供程序,可以通过执行 EXECQUERY 语句在 SAP 系统中执行预定义的查询。

如何使用 EXECQUERY 命令执行查询

若要使用适用于 SAP 的数据提供程序执行预定义的 SAP 查询,请执行以下步骤:

执行查询

  1. 在) Microsoft.Data.SAPClient 的代码中包含引用 (和 using 语句。

  2. 使用适用于 SAP 连接字符串的数据提供程序创建 SAPConnection 对象。 有关连接字符串的详细信息,请参阅读取 SAP 连接字符串的数据提供程序类型

  3. 通过在 SAPConnection 上调用 Open 来打开与 SAP 系统的连接。

  4. SAPConnection 创建 SAPCommand 对象。

  5. SAPCommandCommandText 属性中指定 EXECQUERY 语句。 如有必要,可以使用 SAPParameter 对象指定参数。 有关如何使用 EXECQUERY 语句执行 SAP 系统中定义的查询的详细信息,请参阅 SAP 中的 EXECQUERY 语句的语法

  6. 执行 命令以执行查询并在 SAPDataReader 中获取结果。

  7. SAPDataReader 读取结果。

  8. 使用完它们后,请关闭 (或释放) SAPConnectionSAPDataReader

    适用于 SAP 的数据提供程序还公开 了 SAPClientFactory 类,可用于创建 SAPConnectionSAPCommandSAPConnection 对象。 有关 sap 数据提供程序扩展的 ADO.NET 类的详细信息,请参阅 使用 SAP 适配器扩展 ADO.NET 接口

示例

以下示例将查询的结果 ZTEST1 写入控制台。

using System;  
using System.Collections.Generic;  
using System.Text;  
  
using Microsoft.Data.SAPClient;  
  
namespace SapAdoExecQuery  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
           string connstr = "TYPE=A; ASHOST=YourSapHost; SYSNR=00; CLIENT=800; LANG=EN; USER=YourUserName; PASSWD=YourPassword;";  
           using (SAPConnection conn = new SAPConnection(connstr))  
            {  
                conn.Open();  
                using (SAPCommand cmd = conn.CreateCommand())  
                {  
                    cmd.CommandText = "EXECQUERY ZTEST1 @userGRoup='SYSTQV000024',@P1='0000001390',@P2='0000080150'";  
                    cmd.Parameters.Add(new SAPParameter("@connid", 17));                      
                    using (SAPDataReader dr = cmd.ExecuteReader())  
                    {  
                        do  
                        {  
                            int rows = 0;  
                            while (dr.Read())  
                            {  
                                rows++;  
                                StringBuilder b = new StringBuilder();  
                                for (int i = 0; i < dr.FieldCount; i++)  
                                {  
                                    b.Append(dr[i].ToString()+" ");  
                                }  
                                Console.WriteLine("row {0}: {1} ", rows, b.ToString());  
                            }  
                            Console.WriteLine("Number of rows:{0}", rows);  
                        } while (dr.NextResult());  
                    }  
                }  
            }  
        }  
    }  
}  

另请参阅

使用 mySAP Business Suite 的 .NET Framework 数据提供程序
示例