使用 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 数据提供程序
示例