在 SAP 中使用 SELECT 命令运行查询
mySAP Business Suite .NET Framework数据提供程序将 SAP 系统公开为 ADO.NET 数据源。 使用适用于 mySAP Business Suite 的 .NET Framework 数据提供程序,可以通过执行 SELECT 语句来查询 SAP 项目。
如何使用 SELECT 命令执行查询
若要使用适用于 SAP 的数据提供程序查询 SAP 项目,请执行以下步骤:
执行查询
在) Microsoft.Data.SAPClient 的代码中包含引用 (和 using 语句。
使用适用于 SAP 连接字符串的数据提供程序创建 SAPConnection 对象。 有关连接字符串的详细信息,请参阅读取 SAP 连接字符串的数据提供程序类型。
通过在 SAPConnection 上调用 Open 来打开与 SAP 系统的连接。
从 SAPConnection 创建 SAPCommand 对象。
在 SAPCommand 的 CommandText 属性中指定 SELECT 语句。 如有必要,可以使用 SAPParameter 对象指定参数。 有关如何使用 SELECT 语句查询 SAP 项目的详细信息,请参阅 SAP 中的 SELECT 语句的语法。 有关如何指定 BAPI 或 RFC 的示例,请参阅 SELECT 语句的示例。
执行 命令以执行查询并在 SAPDataReader 中获取结果。
从 SAPDataReader 读取结果。
使用完它们后,请关闭 (或释放) SAPConnection 和 SAPDataReader。
适用于 SAP 的数据提供程序还公开 了 SAPClientFactory 类,可用于创建 SAPConnection、 SAPCommand 和 SAPConnection 对象。 有关 sap 数据提供程序扩展的 ADO.NET 类的详细信息,请参阅 使用 SAP 适配器扩展 ADO.NET 接口。
示例
以下示例将参数化内部联接语句上的 select 结果写入控制台。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Data.SAPClient;
namespace SapAdoSelect
{
class Program
{
static void Main(string[] args)
{
/// <summary>
/// select top 1 * from sflight inner join spfli on sflight.connid = spfli.connid where spfli.connid = @connid
/// </summary>
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 = "select top 1 * from sflight inner join spfli on sflight.connid = spfli.connid where spfli.connid = @connid";
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());
}
}
}
}
}
}