Partager via


Exécution de requêtes XPath (fournisseur SQLXMLOLEDB)

Cet exemple illustre l'utilisation des propriétés suivantes spécifiques au fournisseur SQLXMLOLEDB :

  • ClientSideXML

  • Base Path

  • Mapping Schema

Dans cet exemple d'application ADO, une requête XPath (root) est spécifiée contre un schéma de mappage XSD (MySchema.xml). Le schéma a un élément <Contacts> avec des attributs ContactID, FirstName et LastName. Dans le schéma, le mappage par défaut a lieu : un nom d'élément mappe à la table avec le même nom et les attributs de type simple mappent aux colonnes avec les mêmes noms.

<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 propriété Mapping Schema fournit le schéma de mappage contre lequel la requête XPath est exécutée. Le schéma de mappage peut être un schéma XSD ou XDR. La propriété Base Path fournit le chemin d'accès de fichier au schéma de mappage.

La propriété ClientSideXML a la valeur True. Par conséquent, le document XML est généré sur le client.

Dans l'application, une requête XPath est spécifiée directement. Par conséquent, le dialecte XPath {ec2a4293-e898-11d2-b1b7-00c04f680c56} doit être inclus.

[!REMARQUE]

Dans le code, vous devez fournir le nom de l'instance de SQL Server dans la chaîne de connexion. En outre, cet exemple spécifie l'utilisation de SQL Server Native Client (SQLNCLI11) comme fournisseur de données, ce qui requiert l'installation d'un logiciel client réseau supplémentaire. Pour plus d'informations, consultez Configuration requise pour 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;"

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