Partager via


Flux de commandes

ADO a toujours pris en charge l’entrée de commande au format de chaîne spécifié par la propriété CommandText. En guise d’alternative, avec ADO 2.7 ou version ultérieure, vous pouvez également utiliser un flux d’informations pour l’entrée de commande en affectant le flux à la propriété CommandStream. Vous pouvez affecter un objet Stream ADO ou tout objet qui prend en charge l’interface COM IStream.

Le contenu du flux de commandes est simplement passé d’ADO à votre fournisseur. Votre fournisseur doit donc prendre en charge l’entrée de commande par flux pour que cette fonctionnalité s’applique. Par exemple, SQL Server prend en charge les requêtes sous la forme de modèles XML ou d’extensions OpenXML sur Transact-SQL.

Étant donné que les détails du flux doivent être interprétés par le fournisseur, vous devez spécifier le dialecte de commande en définissant la propriété Dialect. La valeur de Dialect est une chaîne contenant un GUID, qui est défini par votre fournisseur. Pour plus d’informations sur les valeurs valides pour Dialect prises en charge par votre fournisseur, consultez la documentation de votre fournisseur.

Exemple de requête de modèle XML

L’exemple suivant est écrit en VBScript dans la base de données Northwind.

Tout d’abord, initialisez et ouvrez l’objet Stream qui sera utilisé pour contenir le flux de requêtes :

Dim adoStreamQuery  
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")  
adoStreamQuery.Open  

Le contenu du flux de requêtes est une requête de modèle XML.

La requête de modèle nécessite une référence à l’espace de noms XML identifié par le préfixe <sql:query>. Une instruction SQL SELECT est incluse comme contenu du modèle XML et affectée à une variable String comme suit :

sQuery = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>  
<sql:query> SELECT * FROM PRODUCTS ORDER BY PRODUCTNAME </sql:query>  
</ROOT>"  

Ensuite, écrivez la chaîne dans le flux :

adoStreamQuery.WriteText sQuery, adWriteChar  
adoStreamQuery.Position = 0  

Affectez adoStreamQuery à la propriété CommandStream d’un objet Command ADO :

Dim adoCmd  
Set adoCmd  = Server.CreateObject("ADODB.Command"")  
adoCmd.CommandStream = adoStreamQuery  

Spécifiez le Dialect du langage de commandes, qui indique comment le fournisseur OLE DB SQL Server doit interpréter le flux de commandes. Dialecte spécifié par un GUID spécifique au fournisseur :

adoCmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"  

Enfin, exécutez la requête et retournez les résultats à un objet Recordset :

Set objRS = adoCmd.Execute