共用方式為


執行包含 SQL 查詢的樣本 (SQLXMLOLEDB 提供者)

此範例說明如何使用 SQLXMLOLEDB 提供者特定屬性 ClientSideXML。 在此用戶端 ADO 範例應用程式中,會在伺服器上執行包含 SQL 查詢的 XML 範本。

由於 ClientSideXML 屬性設定為 True,因此沒有 FOR XML 子句的 SELECT 語句會傳送至伺服器。 伺服器會執行查詢,並將數據列集傳回給用戶端。 用戶端接著會將 FOR XML 轉換套用至數據列集,並產生 XML 檔。

XML 範本會為產生的 XML 檔提供單一最上層根元素(<ROOT>),因此不會提供 xml 根屬性。

若要執行 XML 範本,必須指定方言 {5d531cb2-e6ed-11d2-b252-00c04f681b71} 。

備註

在程式代碼中,您必須在連接字串中提供 SQL Server 實例的名稱。 此外,此範例會指定數據提供者使用 SQL Server Native Client (SQLNCLI11),而數據提供者需要安裝額外的網路客戶端軟體。 如需詳細資訊,請參閱 SQL Server Native Client 的系統需求

Option Explicit  
  
Sub Main()  
  Dim oTestStream As New ADODB.Stream  
  Dim oTestConnection As New ADODB.Connection  
  Dim oTestCommand As New ADODB.Command  
  oTestConnection.Open "Provider=SQLXMLOLEDB.4.0;Data Provider=SQLNCLI11;Data Source=SqlServerName;Initial Catalog=AdventureWorks;Integrated Security=SSPI;"  
  
  Set oTestCommand.ActiveConnection = oTestConnection  
  oTestCommand.Properties("ClientSideXML") = True  
  oTestCommand.CommandText = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'> " & _  
        " <sql:query> " & _  
        "   SELECT TOP 10 FirstName, LastName FROM Person.Contact FOR XML AUTO " & _  
        "   </sql:query> " & _  
        " </ROOT> "  
  oTestStream.Open  
  ' You need the dialect if you are executing   
  ' XML templates (not for SQL queries).  
  oTestCommand.Dialect = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"  
  oTestCommand.Properties("Output Stream").Value = oTestStream  
  oTestCommand.Execute , , adExecuteStream  
  
  oTestStream.Position = 0  
  oTestStream.Charset = "utf-8"  
  Debug.Print oTestStream.ReadText(adReadAll)  
End Sub  
  
Sub Form_Load()  
  Main  
End Sub