Мир объектов Excel 2000

Сравнение объектных моделей ADO и DAO


В объектной модели DAO есть корневой объект - DBEngine, определяющий машину баз данных. В этот объект вложена коллекция объектов Workspaces, каждый элемент которой - объект Workspace - задает сеанс работы, являясь неким эквивалентом объекта Session в модели OLE DB. В модели ADO сеанс работы связывается с объектом Connection, задающим соединение с базой данных. Заметьте, модель ADO во многом упрощена в сравнении с моделью DAO, - в ней нет даже такого объекта как объект Database, являющегося одним из основных объектов в модели DAO.

Конечно, главное достижение в модели ADO связано с возможностью работы с разнообразными источниками данных и введением такого понятия как Провайдер. В модели DAO, в которой можно работать только с двумя Провайдерами, отсутствие этого понятия и универсального подхода, характерного для ADO, привело к существенному осложнению самой модели. Модель DAO позволяет в течение одной сессии, или, другими словами, в рабочем пространстве работать либо с источником данных Microsoft Jet, либо с ODBC - источниками данных. С объектной точки зрения это означает, что в объект WorkSpace, задающий рабочее пространство, вкладываются две достаточно разные совокупности объектов. Я ограничусь рассмотрением лишь одной половинки этой модели и рассмотрю модель DAO, связанную с источниками данных Microsoft Jet. Взгляните, как выглядит объектная модель DAO для этого случая:


Рис. 6.6.  Объектная модель DAO для рабочей области Microsoft Jet

Обратите внимание, чтобы не усложнять схему, на нижних уровнях иерархии ряд объектов опущен. Вот как следует дополнить эту схему:

  • Объект Container содержит коллекцию Documents с элементами Document,
  • Объект QueryDef содержит коллекцию Parameters с элементами Parameter,
  • Объекты OueryDef, Recordset, Relation, TableDef содержат коллекцию Fields c элементами Field.

Я уже говорил, что объектная модель DAO намного сложнее, чем модель ADO. Чтобы в полной мере реализовать функциональность, обеспечиваемую объектами DAO, представленными на рис. 6.6, в модели АДО потребуется использовать три группы объектов и, соответственно, подключить три различные библиотеки объектов:

  • Объекты ADO, находящиеся в библиотеке ADODB. Их подробному описанию посвящена предыдущая и эта глава. Объекты этой библиотеки позволяют манипулировать с данными базы данных Access (Microsoft Jet). Объект Connection позволяет связаться с базой данных и заменяет, в определенной степени, объекты Workspace и Database. Объект Command, позволяющий выполнять SQL-операторы, заменяет объект QueryDef, который выполняет эти действия в модели DAO. Наконец, объект Recordset присутствует в обеих моделях, выполняя, в общем, аналогичные действия.
  • Объекты из библиотеки ADOX позволяют работать с метаданными. Эту библиотеку следует подключать, если соответствующие объекты DAO - QueryDef, TableDef используются для этих целей, создавая или модифицируя стандартные запросы и таблицы базы данных. Объекты User, Group и их коллекции, присутствующие в моделях DAO и ADOX, выполняют аналогичную работу по обеспечению безопасности и прав доступа пользователей к данным.
  • Еще одну библиотеку объектов - Microsoft Jet and Replication Objects (JRO) следует подключать, если объекты DAO используются для создания реплик (копий базы данных) и их синхронизации. Ранее, рассматривая объекты ADO, я не упоминал эту библиотеку, поскольку в отличие от остальных объектов ADO, объекты этой библиотеки не носят общий характер, - они могут использоваться только при работе с одним источником данных - Microsoft Jet. Основным объектом модели JRO является объект Replica, задающий репликацию базы данных. Свойства и методы этого объекта используются для создания новой репликации, получения и модификации свойств уже существующих реплик и синхронизации реплик. В модели DAO эти функции выполняет объект Database. Еще один объект JetEngine из модели JRO позволяет выполнять операции по сжатию базы данных и обновлению данных, хранимых в кэш-памяти.


Я не буду останавливаться на деталях сходства и различия в моделях ADO и DAO. Отмечу еще только два момента:

  • В модели DAO транзакции связываются с сеансом работы, роль которого играет объект Workspace. Но поскольку в этот объект вложена коллекция объектов Databases, то в транзакции участвуют все открытые базы данных, запоминаются все изменения и при откате восстанавливается состояние всех баз данных. В модели ADO каждая транзакция связана только со своей базой данных, открытой заданным соединением.
  • Модель ADO гораздо компактнее модели DAO. Пожалуй, она проще для понимания, что тоже имеет немаловажное значение. В ряде случаев она требует и меньших ресурсов, например, когда требуется только манипулирование данными, вместо подключения многофункциональной и более объемной библиотеки объектов DAO можно подключить более компактную библиотеку объектов ADO. Главный выигрыш в использовании ADO, конечно же, состоит в универсальном характере объектов этой библиотеки, позволяющих работать с разнообразными источниками данных. Эти объекты можно использовать не только при работе с языками VB и VBA, но и в языке сценариев - VBScript, что позволяет создавать, как обычные приложения, так и Web-приложения, в которых используются источники данных. Один пример использования объектов ADO для создания Web-документа будет приведен в конце этой главы.



Содержание раздела