Partager via


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

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

  • ClientSideXML

  • Base Path

  • Mapping Schema

Dans cet exemple d’application ADO, une requête XPath (racine) est spécifiée par rapport à un schéma de mappage XSD (MySchema.xml). Le schéma possède 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 est mappé à la table avec le même nom et les attributs d’un mappage de type simple aux colonnes portant 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é Schéma de mappage fournit le schéma de mappage sur 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é Chemin d’accès de base fournit le chemin d’accès du 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) pour le fournisseur de données qui nécessite l’installation d’un logiciel client réseau supplémentaire. Pour plus d’informations, consultez Configuration système 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