Partager via


Exécution de modèles contenant des requêtes SQL (fournisseur SQLXMLOLEDB)

Cet exemple illustre l’utilisation de la propriété clientSideXMLXML spécifique au fournisseur SQLXMLOLEDB. Dans cet exemple d’application ADO côté client, un modèle XML qui se compose d’une requête SQL est exécuté sur le serveur.

Étant donné que la propriété ClientSideXML a la valeur True, l’instruction SELECT sans la clause FOR XML est envoyée au serveur. Le serveur exécute la requête et retourne un ensemble de lignes au client. Le client applique ensuite la transformation FOR XML à l’ensemble de lignes et produit un document XML.

Le modèle XML fournit un seul élément racine de niveau supérieur (<ROOT>) pour le document XML généré ; par conséquent, la propriété racine xml n’est pas fournie.

Pour exécuter des modèles XML, le dialecte {5d531cb2-e6ed-11d2-b252-00c04f681b71} doit être spécifié.

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