Befehlsströme
ADO unterstützt immer Die Befehlseingabe im Zeichenfolgenformat, das durch die eigenschaft CommandText angegeben wird. Alternativ können Sie mit ADO 2.7 oder höher auch einen Informationsstrom für die Befehlseingabe verwenden, indem Sie den Datenstrom der CommandStream-eigenschaft zuweisen. Sie können ein ADO-Stream--Objekt oder ein beliebiges Objekt zuweisen, das die COM-IStream--Schnittstelle unterstützt.
Der Inhalt des Befehlsstreams wird einfach von ADO an Ihren Anbieter übergeben, sodass Ihr Anbieter Befehlseingaben durch Stream unterstützen muss, damit dieses Feature funktioniert. Beispielsweise unterstützt SQL Server Abfragen in Form von XML-Vorlagen oder OpenXML-Erweiterungen für Transact-SQL.
Da die Details des Datenstroms vom Anbieter interpretiert werden müssen, müssen Sie den Befehlsdialekt angeben, indem Sie die eigenschaft Dialekt festlegen. Der Wert von Dialekt ist eine Zeichenfolge, die eine GUID enthält, die von Ihrem Anbieter definiert wurde. Informationen zu gültigen Werten für Dialekt, die von Ihrem Anbieter unterstützt werden, finden Sie in ihrer Anbieterdokumentation.
XML-Vorlagenabfrage (Beispiel)
Das folgende Beispiel wird in VBScript in die Northwind-Datenbank geschrieben.
Initialisieren und öffnen Sie zunächst das Stream-Objekt, das zum Enthalten des Abfragedatenstroms verwendet wird:
Dim adoStreamQuery
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")
adoStreamQuery.Open
Der Inhalt des Abfragedatenstroms ist eine XML-Vorlagenabfrage.
Für die Vorlagenabfrage ist ein Verweis auf den xml-Namespace erforderlich, der durch das SQL-Attribut identifiziert wird: Präfix des <sql:query->-Tags. Eine SQL SELECT-Anweisung ist als Inhalt der XML-Vorlage enthalten und einer Zeichenfolgenvariablen wie folgt zugewiesen:
sQuery = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<sql:query> SELECT * FROM PRODUCTS ORDER BY PRODUCTNAME </sql:query>
</ROOT>"
Schreiben Sie als Nächstes die Zeichenfolge in den Datenstrom:
adoStreamQuery.WriteText sQuery, adWriteChar
adoStreamQuery.Position = 0
Weisen Sie adoStreamQuery der CommandStream- eigenschaft eines ADO Command-Objekts zu:
Dim adoCmd
Set adoCmd = Server.CreateObject("ADODB.Command"")
adoCmd.CommandStream = adoStreamQuery
Geben Sie die Befehlssprache Dialektan, die angibt, wie der SQL Server OLE DB-Anbieter den Befehlsdatenstrom interpretieren soll. Der von einer anbieterspezifischen GUID angegebene Dialekt:
adoCmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"
Führen Sie schließlich die Abfrage aus, und geben Sie die Ergebnisse an ein Recordset-Objekt zurück:
Set objRS = adoCmd.Execute