Compartir a través de


Ejecutar consultas XPath (proveedor SQLXMLOLEDB)

En este ejemplo se muestra el uso de las siguientes propiedades SQLXMLOLEDB específicas del proveedor:

  • ClientSideXML

  • Base Path

  • Mapping Schema

En esta aplicación ADO de ejemplo, se especifica una consulta XPath (raíz) en un esquema de asignación XSD (MySchema.xml). El esquema tiene un elemento <Contacts> con los atributos ContactID, LastName y FirstName. En el esquema, tiene lugar la asignación predeterminada: un nombre de elemento se asigna a la tabla con el mismo nombre y los atributos de tipo simple se asignan a las columnas con los mismos nombres.

<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>

La propiedad Mapping Schema proporciona el esquema de asignación en el que se ejecuta la consulta XPath. El esquema de asignación puede ser un esquema XSD o XDR. La propiedad Base Path proporciona la ruta de acceso al esquema de asignación.

La propiedad ClientSideXML está establecida en True. Por lo tanto, el documento XML se genera en el cliente.

En la aplicación, se especifica una consulta XPath directamente. Por ello, debe incluirse el dialecto XPath {ec2a4293-e898-11d2-b1b7-00c04f680c56}.

[!NOTA]

En el código, debe suministrarse el nombre de la instancia de SQL Server en la cadena de conexión. Además, este ejemplo especifica el uso de SQL Server Native Client (SQLNCLI10) para el proveedor de datos, que exige la instalación de software cliente de red adicional. Para obtener más información, vea Requisitos del sistema para 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