使用 EXECQUERY 命令執行 SAP 查詢
.NET Framework Data Provider for mySAP Business Suite 會將 SAP 系統公開為 ADO.NET 資料來源。 使用適用于 SAP 的資料提供者,您可以藉由執行 EXECQUERY 語句,在 SAP 系統中執行預先定義的查詢。
如何使用 EXECQUERY 命令執行查詢
若要使用 Data Provider for SAP 執行預先定義的 SAP 查詢,請執行下列步驟:
執行查詢
將參考 (和 using 語句包含在程式碼中,) 至 Microsoft.Data.SAPClient。
使用 Data Provider for SAP 連接字串建立SAPConnection物件。 如需連接字串的詳細資訊,請參閱閱讀 SAP 連接字串的資料提供者類型。
叫用SAPConnection上的Open來開啟 SAP 系統的連線。
從SAPConnection建立SAPCommand物件。
在SAPCommand的CommandText屬性中指定 EXECQUERY 語句。 如有必要,您可以使用 SAPParameter 物件來指定參數。 如需如何使用 EXECQUERY 語句在 SAP 系統中執行所定義查詢的詳細資訊,請參閱 SAP 中 EXECQUERY 語句的語法。
執行 命令以執行查詢,並在 SAPDataReader中取得結果。
從 SAPDataReader讀取結果。
當您完成使用它們時,請關閉 (或處置) SAPConnection 和 SAPDataReader。
Data Provider for SAP 也會公開 SAPClientFactory 類別,您可以用來建立 SAPConnection、 SAPCommand 和 SAPConnection 物件。 如需資料提供者 for 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());
}
}
}
}
}
}