Compartilhar via


Executando modelos que contêm consultas SQL (provedor SQLXMLOLEDB)

Este exemplo ilustra o uso da propriedade específica do provedor SQLXMLOLEDB ClientSideXML. Neste aplicativo de exemplo do ADO do lado do cliente, um modelo XML que consiste em uma consulta SQL é executado no servidor.

Como a propriedade ClientSideXML está definida como True, a instrução SELECT sem a cláusula FOR XML é enviada ao servidor. O servidor executa a consulta e retorna um conjunto de linhas para o cliente. Em seguida, o cliente aplica a transformação FOR XML ao conjunto de linhas e produz um documento XML.

O modelo XML fornece um único elemento raiz de nível superior (<ROOT>) para o documento XML que é gerado; portanto, a propriedade raiz xml não é fornecida.

Para executar modelos XML, o dialeto {5d531cb2-e6ed-11d2-b252-00c04f681b71} deve ser especificado.

Observação

No código, você deve fornecer o nome da instância do SQL Server na cadeia de conexão. Além disso, este exemplo especifica o uso do SQL Server Native Client (SQLNCLI11) para o provedor de dados que exige a instalação de software cliente de rede adicional. Para obter mais informações, consulte Os Requisitos do Sistema para o 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