Wykonywanie szablony zawierające kwerendy SQL (Dostawca SQLXMLOLEDB)
Ten przykład ilustruje użycie właściwość SQLXMLOLEDB specyficznych dla dostawca ClientSideXML. W tej przykładowej aplikacji obiektów ADO klient szablonu XML, który składa się z kwerendę SQL jest wykonywany na serwerze.
Ponieważ ClientSideXML Właściwość jest ustawiona na wartość true, instrukcja SELECT bez klauzula FOR XML jest wysyłany do serwera. Serwer wykonuje kwerendę i zwraca klientowi zestawu zestaw wierszy.Klient następnie stosuje transformacja FOR XML do zestawu zestaw wierszy i tworzy dokument XML.
Szablon XML oferuje (element do pojedynczego najwyższego poziom głównego<KATALOG GŁÓWNY>) do dokumentu XML, który jest generowany; dlatego xml root Właściwość nie jest wymagane.
Wykonać szablony XML, musi być określony dialekt {5d531cb2-e6ed-11 d 2-b252-00c04f681b71}.
Uwaga
W kodzie musisz podać nazwę wystąpienie programu SQL Server w ciąg połączenia. Ponadto w tym przykładzie określa używanie SQL Server Macierzysty klient (SQLNCLI10) dla dostawca danych, który wymaga oprogramowanie klient sieciowego dodatkowe mają być zainstalowane. Aby uzyskać więcej informacji zobaczWymagania systemowe dla programu SQL Server 2008 Native klient.
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=SQLNCLI10;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