Condividi tramite


Flussi dei comandi

ADO ha sempre supportato l'input del comando in formato stringa specificato dalla proprietà CommandText. In alternativa, con ADO 2.7 o versione successiva, è anche possibile usare un flusso di informazioni per l'input del comando assegnando il flusso alla proprietà CommandStream. È possibile assegnare un oggetto ADO Stream o qualsiasi oggetto che supporti l'interfaccia COM IStream .

Il contenuto del flusso di comandi viene semplicemente passato da ADO al provider, quindi il provider deve supportare l'input del comando in base al flusso per consentire il funzionamento di questa funzionalità. AD esempio, SQL Server supporta query sotto forma di modelli XML o estensioni OpenXML in Transact-SQL.

Poiché i dettagli del flusso devono essere interpretati dal provider, è necessario specificare il dialetto del comando impostando la proprietà dialetto. Il valore di Dialect è una stringa contenente un GUID, definito dal provider. Per informazioni sui valori validi per Dialect supportato dal tuo provider, vedere la documentazione del tuo provider.

Esempio di query modello XML

L'esempio seguente è scritto in VBScript nel database Northwind.

Prima di tutto, inizializzare e aprire l'oggetto Stream che verrà usato per contenere il flusso di query:

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

Il contenuto del flusso di query sarà una query di modello XML.

La query del modello richiede un riferimento allo spazio dei nomi XML identificato dal prefisso sql: del tag <sql:query>. Un'istruzione SQL SELECT viene inclusa come contenuto del modello XML e assegnata a una variabile stringa come indicato di seguito:

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

Scrivere quindi la stringa nel flusso:

adoStreamQuery.WriteText sQuery, adWriteChar  
adoStreamQuery.Position = 0  

Assegnare adoStreamQuery alla proprietà CommandStream di un oggetto Command ADO.

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

Specificare la lingua dei comandi Dialect, che indica come il provider OLE DB di SQL Server deve interpretare il flusso di comandi. Il dialetto specificato da un GUID specifico del provider:

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

Eseguire infine la query e restituire i risultati a un oggetto Recordset :

Set objRS = adoCmd.Execute