使用 EXECQUERY 命令执行 SAP 查询
mySAP Business Suite .NET Framework数据提供程序将 SAP 系统公开为 ADO.NET 数据源。 使用适用于 SAP 的数据提供程序,可以通过执行 EXECQUERY 语句在 SAP 系统中执行预定义的查询。
如何使用 EXECQUERY 命令执行查询
若要使用适用于 SAP 的数据提供程序执行预定义的 SAP 查询,请执行以下步骤:
执行查询
在) Microsoft.Data.SAPClient 的代码中包含引用 (和 using 语句。
使用适用于 SAP 连接字符串的数据提供程序创建 SAPConnection 对象。 有关连接字符串的详细信息,请参阅读取 SAP 连接字符串的数据提供程序类型。
通过在 SAPConnection 上调用 Open 来打开与 SAP 系统的连接。
从 SAPConnection 创建 SAPCommand 对象。
在 SAPCommand 的 CommandText 属性中指定 EXECQUERY 语句。 如有必要,可以使用 SAPParameter 对象指定参数。 有关如何使用 EXECQUERY 语句执行 SAP 系统中定义的查询的详细信息,请参阅 SAP 中的 EXECQUERY 语句的语法。
执行 命令以执行查询并在 SAPDataReader 中获取结果。
从 SAPDataReader 读取结果。
使用完它们后,请关闭 (或释放) SAPConnection 和 SAPDataReader。
适用于 SAP 的数据提供程序还公开 了 SAPClientFactory 类,可用于创建 SAPConnection、 SAPCommand 和 SAPConnection 对象。 有关 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());
}
}
}
}
}
}