Введение в базы данных
Объект Transaction
Объект Transaction поддерживает транзакции в источнике данных. Транзакции, как мы уже знаем из первой статьи данного цикла, позволяют определить группу операций, которые либо все вместе выполняются, либо все вместе отменяются.
Транзакции бывают локальными и распределенными. Локальные транзакции — это транзакции, выполняемые в контексте единого провайдера данных. Провайдер, поддерживающий локальные транзакции, должен реализовать интерфейс ITransactionLocal. Транзакция начинается с вызова метода StartTransaction, завершается с помощью метода Commit или откатывается с помощью Abort. Способность провайдера поддерживать транзакции может быть определена с помощью интерфейса IDBProperties.
Распределенные транзакции выполняются в контексте нескольких провайдеров данных. Для выполнения таких транзакций потребители используют интерфейс TtransactionJoin, доступный только если провайдер данных поддерживает распределенные транзакции. В этом случае потребитель вызывает метод JoinTransaction для регистрации сессии в распределенной транзакции. После присоединения к распределенной транзакции потребитель использует интерфейс ITransaction для завершения или отката транзакции.
![]() |
![]() |
Объект Error
В дополнение к кодам возврата и информации о состоянии, свидетельствующей об успехе или неуспехе вызова любого из методов OLE DB, OLE DB-провайдеры могут предоставлять расширенную информацию об ошибках с помощью объекта Error. Потребители данных могут использовать интерфейс ISupportErrorInfo для того, чтобы определить, может ли данный объект возвратить объект Error, и если да, то каковы эти интерфейсы.
Подробности об OLE DB можно найти на Web-сайте компании Microsoft:
http://www.microsoft.com/data/oledb
или в следующих группах новостей на http://msnews.microsoft.com:
Выше мы уже перечислили ряд стандартных OLE DB-провайдеров, доступных в составе Microsoft Data Access Components и некоторых других продуктов Microsoft. Далее мы выясним, где можно найти OLE DB-провайдеры сторонних производителей и даже инструменты для создания собственных провайдеров.
![]() |
![]() |
Поставщики OLE DB-провайдеров
Многие производители СУБД поставляют OLE DB-провайдеры в составе своих продуктов. В табл. 2 приведен список подобных производителей серверных СУБД.
Таблица 2
Производитель | OLE DB-провайдеры | URL |
---|---|---|
Computer Associates, Inc. | Jasmine OLE DB Provider | http://www.cai.com/ |
Informix Software, Inc. | INFORMIX OLE DB Provider | http://www.informix.com |
Object Design, Inc. | ObjectStore OLE DB Provider | http://www.odi.com |
SAS Institute | SAS/MDDB | http://www.sas.com |
Sequiter Software, Inc. | CodeBase OLE DB Provider | http://www.sequiter.com |
Помимо этого существуют компании, производящие OLE DB-провайдеры для различных источников данных. Они перечислены в табл. 3.
Наиболее актуальную информацию об OLE DB-провайдерах можно найти на сайте, посвященном Microsoft Universal Data Access:
http://www.microsoft.com/data/partners/products.htm
В случае когда вам необходимо создать собственный OLE DB-провайдер, есть несколько инструментов, доступных на рынке. Они показаны в табл. 4.
Таблица 4
Vendor | Tool | URL |
---|---|---|
Simba Technologies | SimbaProviderSimbaProvider for OLAP SDK | http://www.simba.com/ |
Automation Technology Company | OpenAccess OLE DB SDK | http://www.odbcsdk.com/ |
Geppetto's Workshop | AntMDX | http://www.geppetto.com/ |
X-Tension | MDX Parser for OLE DB for OLAP | http://www.x-tension.com/ |
IBM | Client Access for Windows 9x/NT SDK | http://www.as400.ibm.com/ |
Binh Ly | OLE DB Provider Toolkit for Delphi 5 | http://www.techvanguards.com |
Рассмотрев OLE DB, мы можем перейти к обсуждению ADO и его взаимодействию с OLE DB.
![]() |
![]() |
Microsoft ActiveX Data Objects
ADO, как мы знаем, представляет собой высокоуровневый программный интерфейс для доступа к OLE DB-интерфейсам. Он позволяет манипулировать данными с помощью любых OLE DB-провайдеров, как входящих в состав Microsoft Data Access Components некоторых других продуктов Microsoft, так и произведенных сторонними производителями. ADO содержит набор объектов, используемых для соединения с источником данных, для чтения, добавления, удаления и модификации данных.
Объект ADO Connection применяется для установки связи с источником данных. Он представляет единственную сессию. Этот объект позволяет изменить параметры соединения с базой данных, а также начать или завершить транзакцию. Используя объект Connection, мы можем выполнять команды (например, SQL-запросы) с помощью метода Execute. Если команда возвращает набор данных, автоматически создается объект Recordset, который возвращается в результате выполнения этого метода.
Объект Error используется для получения сведений об ошибках, возникающих в процессе выполнения.
Объект Command представляет собой команду, которую можно выполнить в источнике данных. Команда может содержать SQL-предложение или вызов хранимой процедуры. В последнем случае для определения параметров процедуры может быть использована коллекция Parameters объекта Command.
Объект Recordset — это набор записей, полученных из источника данных, и может быть использован для добавления, удаления, изменения, просмотра записей. Данный объект может быть открыт непосредственно или создан с помощью объектов Connection или Command.
Объект Field — это колонка в наборе данных, представленных объектом Recordset. Он может быть использован для получения значений конкретного поля, его модификации, извлечения метаданных, таких как имя колонки и тип данных.
На рис. 4 изображена объектная модель ADO.
Библиотека ADO 2.5, являющаяся составной частью операционной системы Windows 2000, содержит два новых объекта — Record и Stream.
Объект Record представляет одну запись внутри объекта Recordset и может быть использован для работы с гетерогенными и иерархическими данными.
Объект Stream представляет двоичные данные, связанные с объектом Record. Например, если объект Record представляет собой файл, то его объект Stream должен содержать данные внутри этого файла.
![]() |
![]() |
OLE DB и ADO
Ранее в этой статье мы уже рассмотрели некоторые основные объекты OLE DB. Теперь настало время показать, как объекты ADO используют OLD DB:
- объект ADO Connection использует объекты OLE DB DataSource и Session. Транзакции поддерживаются с помощью интерфейсов ITransaction и ITransactionLocal, метод Execute использует метод Execute интерфейса ICommand или метод OpenRowset интерфейса IOpenRowset. Большинство свойств доступно с помощью IDBProperties. Объект Error поддерживается с помощью интерфейса IErrorRecords;
- объект ADO Command использует объект OLE DB Command и интерфейс ICommand. Например, его метод Execute вызывает непосредственно одноименный метод объекта OLE DB Command, его свойство CommandText доступно с помощью методов GetCommandText и SetCommandText интерфейса ICommandText. Коллекция Parameters объекта ADO Command доступна с помощью интерфейса ICommandWithParameters;
- объект ADO Recordset использует объект OLE DB Rowset. Он применяет интерфейсы IRowset, IRowsetLocate и IRowsetInfo для реализации большинства методов, свойств и коллекций. Объект Field использует интерфейс IColumnsInfo.
Подробную информацию можно найти в Microsoft OLE DB Programmer’s Reference, являющемся составной частью Platform SDK.
![]() |
![]() |
Расширения ADO
Начиная с версии 2.1, ADO содержит несколько расширений, на которых мы кратко остановимся ниже.
![]() |
![]() |
ADO Extensions for Data Definition and Security (ADOX)
ADO Extensions for Data Definition and Security (ADOX) представляет собой набор объектов, позволяющих манипулировать метаданными в базах данных и управлять объектами, отвечающими за безопасность. Эти объекты кратко описаны в табл. 5.
Иерархия объектов ADOX показана на рис. 5. Из диаграмм на рисунке следует, что объекты Table, Column и Index имеют стандартную коллекцию Properties. Объекты ADOX представляют большинство основных объектов в типичных реляционных СУБД, и их свойства и методы могут быть использованы для создания этих объектов и манипуляции ими.
![]() |
![]() |
ADO Multi-Dimensional Extensions (ADOMD)
ADO Multi-Dimensional Extensions (ADOMD) — это набор объектов, позволяющих использовать многомерные данные в ADO-приложениях. Такие данные управляются OLAP-серверами (OLAP, Online Analytical Processing), такими как Microsoft OLAP Server, входящий в комплект поставки Microsoft SQL Server 7.0 (или Analytical Services в Microsoft SQL Server 2000). OLAP-серверы широко применяются в системах принятия решений, где требуется статистический анализ больших объемов данных.
Объекты ADOMD кратко описаны в табл. 6.
Иерархия объектов ADOMD показана на рис. 6.
Jet and Replication Objects (JRO)
Jet and Replication Objects — набор объектов, специально предназначенных для использования совместно с Microsoft Jet OLE DB Provider. Его свойства позволяют создавать, модифицировать и синхронизировать реплики. Реплика — это копия базы данных, изменения в которой синхронизируются с главной базой данных (master database).
Объект Replica используется для создания новых реплик, модификации свойств существующих реплик и синхронизации изменений с другими репликами.
Объект JetEngine применяется для сжатия баз данных и обновления данных из кэша памяти.
Иерархия объектов JRO показана на рис. 7.
Подробности об ADO можно найти на Web-сайте компании Microsoft:
http://www.microsoft.com/data/ado
или в следующих группах новостей на http://msnews.microsoft.com:
![]() |
![]() |
Где найти MDAC
Microsoft Data Access Components можно найти на Web-сайте компании Microsoft: http://www.microsoft.com/data, а также в составе Delphi 5 и C++Builder 5 Enterprise, Microsoft Office 2000, Internet Explorer 5.0. Рекомендуется периодически обновлять версию MDAC, получая ее с сайта компании Microsoft, — это гарантирует наличие последних версий всех компонентов MDAC.
ADO 2.5 является частью Windows 2000 и не требует отдельной установки. MDAC Software Development Kit, который может потребоваться разработчикам ADO-приложений, входит в состав Microsoft Platform SDK. Он может быть заказан на CD-ROM или получен на Web-сайте компании Microsoft.
![]() |
![]() |
Заключение
В данной статье мы рассмотрели основные части Microsoft Data Access Components (MDAC) — набора технологий, реализующих универсальный механизм доступа к данным Microsoft. Мы узнали, что универсальный механизм доступа к данным (Universal Data Access) представляет собой стратегию предоставления доступа к любому типу информации предприятия, включая реляционные и нереляционные данные.
Далее мы рассмотрели основные компоненты архитектуры универсального механизма доступа к данным Microsoft. Мы узнали, что:
- OLE DB — это низкоуровневый интерфейс для доступа к данным. ADO использует OLE DB, но можно использовать OLE DB и напрямую, минуя ADO;
- Microsoft ActiveX Data Objects (ADO) — это программный интерфейс для доступа к данным из приложений. С точки зрения программирования ADO и его расширения представляют собой упрощенный высокоуровневый объектно-ориентированный интерфейс к OLE DB.
Кроме того, мы рассмотрели основные объекты OLE DB и ADO и выяснили, как они взаимодействуют друг с другом.
Перечислив стандартные OLE DB-провайдеры, доступные в составе Microsoft Data Access Components и некоторых других продуктов Microsoft, мы обсудили, какие OLE DB-провайдеры сторонних производителей доступны в настоящее время и какие в данный момент имеются инструменты для производства собственных провайдеров.
Мы также рассмотрели расширения ADO, доступные начиная с версии 2.1:
- ADO Extensions for Data Definition and Security (ADOX) — это набор объектов, позволяющих манипулировать метаданными в базах данных и управлять объектами, отвечающими за безопасность данных;
- ADO Multi-Dimensional Extensions (ADOMD) — это набор объектов, позволяющих использовать в ADO-приложениях многомерные данные, управляемые OLAP-серверами;
- Jet and Replication Objects — это набор объектов для управления репликациями, специально предназначенных для использования совместно с Microsoft Jet OLE DB Provider.
Несколько слов хотелось бы сказать об универсальных механизмах доступа к данным в целом. Как мы видим, механизм, основанный на применении OLE DB и ADO, имеет все основания претендовать на роль ключевой технологии доступа к данным для Windows-приложений, ибо:
- он входит в состав не только многих популярных продуктов Microsoft, но и семейства операционных систем Windows 2000, что позволяет безболезненно решить ряд проблем, связанных с поставкой таких приложений и их сопровождением;
- OLE DB-провайдеры выпускаются не только автором технологии OLE DB, но и многими сторонними производителями (вспомним, например, что ситуация с BDE-драйверами как раз обратная);
- доступ к нереляционным данным, предусмотренный данной технологией, является весьма привлекательной ее особенностью, и на данный момент другие универсальные механизмы доступа к данным не могут предложить ничего подобного;
- данная технология базируется на использовании COM-интерфейсов, поэтому она поддерживается всеми средствами разработки, позволяющими создание COM-клиентов с их помощью. Кроме того, многие средства разработки, даже не принадлежащие Microsoft, поддерживают ADO на уровне собственных классов и компонентов (например, Delphi 5 и C++Builder 5), несмотря на наличие других встроенных механизмов доступа к данным.
Отметим также, что расширяемая объектная модель ADO позволяет придавать последним реализациям этой технологии новые возможности, что, скорее всего, приведет к повышению популярности этой технологии.
Этой статьей мы закончили обзор универсальных механизмов доступа к данным. Следующая статья данного цикла будет посвящена языку SQL, широко применяемому ныне для манипуляции данными.

КомпьютерПресс 8'2000