Compartilhar via


Executando consultas XPath (provedor SQLXMLOLEDB)

Este exemplo ilustra o uso das seguintes propriedades específicas de provedor SQLXMLOLEDB:

  • ClientSideXML

  • Base Path

  • Mapping Schema

Neste aplicativo de exemplo do ADO, uma consulta XPath (raiz) é especificada em um esquema de mapeamento XSD (MySchema.xml). O esquema tem um elemento <Contacts> com os atributos ContactID, FirstName e LastName. No esquema, acontece o mapeamento padrão: um nome de elemento é mapeado para a tabela com o mesmo nome, e os atributos do tipo simples, para as colunas com os mesmos nomes.

<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
   xmlns:sql='urn:schemas-microsoft-com:mapping-schema'>
 <xsd:element name= 'root' sql:is-constant='1'> 
    <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref = 'Contacts'/>
       </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name='Contacts' sql:relation='Person.Contact'> 
     <xsd:complexType>
          <xsd:attribute name='ContactID' type='xsd:integer' />
          <xsd:attribute name='FirstName' type='xsd:string'/> 
          <xsd:attribute name='LastName' type='xsd:string' /> 
     </xsd:complexType>
   </xsd:element>
</xsd:schema>

A propriedade Mapping Schema fornece o esquema de mapeamento com relação ao qual a consulta XPath é executada. O esquema de mapeamento pode ser um esquema XSD ou XDR. A propriedade Base Path fornece o caminho do arquivo para o esquema de mapeamento.

A propriedade ClientSideXML é definida como True. Assim, o documento XML é gerado no cliente.

No aplicativo, uma consulta XPath é especificada diretamente. Por isso, o dialeto XPath {ec2a4293-e898-11d2-b1b7-00c04f680c56} deve ser incluído.

ObservaçãoObservação

No código, é necessário fornecer o nome da instância do SQL Server na cadeia de conexão. Este exemplo também especifica o uso do SQL Server Native Client (SQLNCLI10) para o provedor de dados, o que requer a instalação adicional do software cliente da rede. Para obter mais informações, consulte Requisitos de sistema do SQL Server 2008 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=SQLNCLI10;data source=SqlServerName;initial catalog=AdventureWorks;Integrated Security= SSPI;"

oTestCommand.ActiveConnection = oTestConnection
oTestCommand.Properties("ClientSideXML") = True

oTestCommand.CommandText = "root"
oTestStream.Open
oTestCommand.Dialect = "{ec2a4293-e898-11d2-b1b7-00c04f680c56}"
oTestCommand.Properties("Output Stream").Value = oTestStream
oTestCommand.Properties("Base Path").Value = "c:\Schemas\SQLXML4\XPathDirect\"
oTestCommand.Properties("Mapping Schema").Value = "mySchema.xml"
oTestCommand.Properties("Output Encoding") = "utf-8"
oTestCommand.Execute , , adExecuteStream
oTestStream.Position = 0
oTestStream.Charset = "utf-8"
Debug.Print oTestStream.ReadText(adReadAll)

End Sub
Sub Form_Load()
 main
End Sub