執行包含 SQL 查詢的範本 (SQLXMLOLEDB 提供者)
此範例說明如何使用 SQLXMLOLEDB 提供者特有的屬性 ClientSideXML。 在此用戶端 ADO 範例應用程式中,由 SQL 查詢所組成的 XML 範本會在伺服器上執行。
因為 ClientSideXML 屬性設定為 True,所以會將沒有 FOR XML 子句的 SELECT 陳述式傳送到伺服器。 伺服器會執行查詢,並將資料列集傳回給用戶端。 用戶端接著會將 FOR XML 轉換套用至資料列集,並產生 XML 文件。
XML 範本會針對產生的 XML 文件提供單一最上層的根元素 (<ROOT>);因此,不會提供 xml root 屬性。
若要執行 XML 範本,必須指定 Dialect {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