В этой версии библиотеки появилась возможность выполнять с помощью объекта Command не только SQL-запросы, но и XML-шаблоны и запросы XPath. Для этого было введено новое свойство Dialect. Далее приведены все известные на сегодняшний момент значения этого свойства [10].
Тип команды | Значение в ADO |
Запрос Transact-SQL | {C8B522D7-5CF3-11CE-ADE5-00AA0044773D} |
Запрос XPath | {EC2A4293-E898-11D2-B1B7-00C04F680C56} |
Запрос в XML-шаблоне | {5D531CB2-E6Ed-11D2-B252-00C04F681B71} |
Поведение провайдера по умолчанию | {C8B521FB-5CF3-11CE-ADE5-00AA0044773D} |
Так как результат выполнения объекта Command теперь не всегда может иметь реляционный характер, его нельзя помещать в объект Recordset. Название нового стандартного свойства Output Stream говорит само за себя: результат выполнения объекта Command может быть сохранен в потоке (любом объекте, поддерживающим интерфейс IStream). Кроме этого, поскольку запрос (свойство CommandText) теперь может представлять собой запрос XPath, нужно как-то задать аннотированную схему для него. Это делается с помощью стандартного свойства Mapping Schema. Пора переходить к примерам.
Использование Command для формирования XML-документа на сервере
В этом примере показано, как сформировать XML-документ на сервере и отправить его клиенту с использованием ADO:
<% ' Определяем константы ADO.Const adopenStatic = 3Const adLockReadOnly = 1Const adCmdText = 1Const adPersistXML = 1Const adExecuteStream = &H400 ' создание объектовDim cmd,connSet cmd = Server.CreateObject("ADODB.Command")Set conn = Server.CreateObject("ADODB.Connection") conn.Provider = "sqloledb"conn.Open "Data Source=server;Initial catalog=pubs;", "user", "password" Set cmd.ActiveConnection = conncmd.CommandType = adCmdTextcmd.CommandText = "select au_fname, au_lname, address " _ & "from authors where au_fname like 'M%' for xml auto"cmd.Properties("Output Stream") = Responsecmd.Properties("xml root") = "root"cmd.Execute,, adExecuteStream Set cmd = nothingSet conn = nothing%> |
Здесь используется встроенная инструкция FOR XML AUTO для формирования XML-документа на SQL Server’е. В результирующем документе отсутствует корневой элемент, и для его указания используется еще одно стандартное свойство – xml root. В качестве выходного потока был использован объект Response. Результат обращения к этой ASP-страничке вы, наверное, уже давно выучили наизусть: это будет XML-документ с именами, фамилиями и адресами авторов.