在 SAP 中使用 SELECT 命令執行查詢
.NET Framework data Provider for mySAP Business Suite 會將 SAP 系統公開為 ADO.NET 資料來源。 透過 .NET Framework data Provider for mySAP Business Suite,您可以執行 SELECT 語句來查詢 SAP 成品。
如何使用 SELECT 命令執行查詢
若要使用適用于 SAP 的資料提供者查詢 SAP 成品,請執行下列步驟:
執行查詢
在您的程式碼中包含參考 (和 using 語句,) 至 Microsoft.Data.SAPClient。
使用適用于 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 物件。 如需資料提供者 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());
}
}
}
}
}
}