SAP で SELECT コマンドを使用してクエリを実行する
.NET Framework Data Provider for mySAP Business Suite は、SAP システムを ADO.NET データ ソースとして公開します。 .NET Framework Data Provider for mySAP Business Suite を使用すると、SELECT ステートメントを実行して SAP 成果物に対してクエリを実行できます。
SELECT コマンドを使用してクエリを実行する方法
DATA Provider for SAP を使用して SAP 成果物に対してクエリを実行するには、次の手順を実行します。
クエリを実行するには
Microsoft.Data.SAPClient への参照 (およびコード内の using ステートメント) を含めます。
DATA Provider for 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 オブジェクトを作成できます。 Data Provider for 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());
}
}
}
}
}
}
参照
.NET Framework Data Provider for mySAP Business Suite の使用
サンプル