Bagikan melalui


Menjalankan Templat yang Berisi Kueri SQL (Penyedia SQLXMLOLEDB)

Contoh ini mengilustrasikan penggunaan properti khusus Penyedia SQLXMLOLEDB ClientSideXML. Dalam aplikasi sampel ADO sisi klien ini, templat XML yang terdiri dari kueri SQL dijalankan di server.

Karena properti ClientSideXML diatur ke True, pernyataan SELECT tanpa klausa FOR XML dikirim ke server. Server menjalankan kueri dan mengembalikan set baris ke klien. Klien kemudian menerapkan transformasi FOR XML ke set baris dan menghasilkan dokumen XML.

Templat XML menyediakan elemen akar tingkat atas tunggal (<ROOT>) untuk dokumen XML yang dihasilkan; oleh karena itu, properti akar xml tidak disediakan.

Untuk menjalankan templat XML, dialek {5d531cb2-e6ed-11d2-b252-00c04f681b71} harus ditentukan.

Nota

Dalam kode, Anda harus memberikan nama instans SQL Server dalam string koneksi. Selain itu, contoh ini menentukan penggunaan SQL Server Native Client (SQLNCLI11) untuk penyedia data yang memerlukan perangkat lunak klien jaringan tambahan untuk diinstal. Untuk informasi selengkapnya, lihat Persyaratan Sistem untuk 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