Интерфейс ADO

Интерфейс ADO (Microsoft ActiveX Data Objects) представляет собой высокоуровневый программный интерфейс для доступа к OLE DB-интерфейсам, а в будущем – модель доступа к данным любых типов. Он также является частью универсального механизма доступа к данным Microsoft (Microsoft Universal Data Access) и позволяет манипулировать данными с помощью любых OLE DB-провайдеров, как входящих в состав Microsoft Data Access Components, так и произведенных сторонними производителями. Основой интерфейса ADO является набор объектов, используемых для соединения с источником данных, чтения, добавления, удаления и модификации данных.

Объектная модель ADO очень проста и понятна. Верхний уровень иерархии представляет объект ADO Connection, который применяется для установки связи с источником данных. Этот объект представляет единственную сессию и позволяет изменить параметры соединения с базой данных, а также начать или завершить транзакцию. Используя объект Connection, можно выполнять команды (например, SQL-запросы) с помощью метода Execute. А если команда возвращает набор данных, то автоматически создается объект Recordset, который возвращается в результате выполнения этого метода.

Объект Error используется для получения сведений об ошибках, возникающих в процессе выполнения. Объект Command представляет собой команду, которую можно выполнить в источнике данных. Команда может содержать SQL-предложение или вызов хранимой процедуры. В последнем случае для определения параметров процедуры может быть использована коллекция Parameters объекта Command.

Объект Recordset – это набор записей, полученных из источника данных. Он может быть использован для добавления, удаления, изменения, просмотра записей. Данный объект может быть открыт непосредственно или создан с помощью объектов Connection или Command.

Объект Field – это столбец в наборе данных, представленных объектом Recordset. Он может быть использован для получения значений конкретного поля, его модификации, а также извлечения метаданных, таких как имя колонки и тип данных.

Библиотека ADO 2.5 содержит два новых объекта Record и Stream. Объект Record представляет одну запись внутри объекта Recordset и может быть использован для работы с гетерогенными и иерархическими данными. Объект Stream представляет двоичные данные, связанные с объектом Record. Например, если объект Record представляет собой файл, то соответствующий объект Stream будет содержать данные этого файла.

Как уже говорилось, интерфейс ADO является высокоуровневой надстройкой над интерфейсов OLE DB. Проиллюстрируем связь этих интерфейсов и соответствующих объектов (более подробную информацию можно найти в Microsoft OLE DB Programmer's Reference):

• объект ADO Connection использует объекты OLE DB DataSource и Session. Транзакции поддерживаются с помощью интерфейсов ITransaction и ITransactionLocal, метод Execute использует метод Execute интерфейса ICommand или метод OpenRowset интерфейса IOpenRowset. Большинство свойств доступно с помощью IDBProperties. Объект Error поддерживается с помощью интерфейса IErrorRecords;

• объект ADO Command использует объект OLE DB Command и интерфейс ICommand. Коллекция Parameters объекта ADO Command доступна с помощью интерфейса ICommandWithParameters;

• объект ADO Recordset использует объект OLE DB Rowset. Он применяет интерфейсы IRowset, IRowsetLocate и IRowsetInfo для реализации большинства методов, свойств и коллекций. Объект Field использует интерфейс IColumnsInfo.

Начиная с версии 2.1, ADO содержит несколько расширений. Первое из них – ADO Extensions for Data Definition and Security (ADOX). ADOX представляет собой набор объектов, позволяющих манипулировать метаданными в базах данных и управлять объектами, отвечающими за безопасность.

Объекты ADOX представляют большинство основных объектов в типичных реляционных СУБД, и их свойства и методы могут быть использованы для создания этих объектов и манипуляции ими.

Объект Назначение

Catalog Представляет всю схему базы данных

Table Представляет таблицу в базе данных

Column Представляет колонку в таблице, индексе или ключе

Index Представляет индекс внутри таблицы

Key Представляет первичный или внешний ключ

Group Представляет группу пользователей

User Представляет индивидуального пользователя базы данных внутри группы

Procedure Представляет хранимую процедуру внутри базы данных

View Представляет view внутри базы данных

Еще одно расширение – ADO Multi-Dimensional Extensions (ADOMD). ADOMD – это набор объектов, позволяющих использовать многомерные данные в ADO-приложениях. Такие данные управляются OLAP-серверами (OLAP, Online Analytical Processing), которые широко применяются в системах принятия решений, где требуется статистический анализ больших объемов данных.

Объект Назначение

Catalog Представляет всю схему многомерной базы данных

CubeDef Представляет многомерный куб в базе данных

Dimension Представляет размерность внутри куба

Hierarchy Представляет иерархию внутри размерности

Level Представляет уровень иерархии

Cellset Представляет результат запроса к кубу

Cell Представляет ячейку в объекте CellSet

Axis Представляет одну из осей в объекте CellSet

Position Представляет позицию в объектах Cell или Axis

Member Представляет конкретное значение вдоль оси или уровня иерархии

Последнее из расширений – Jet and Replication Objects (JRO). JRO представляет собой набор объектов, специально предназначенных для использования совместно с Microsoft Jet OLE DB Provider. Его свойства позволяют создавать, модифицировать и синхронизировать реплики. Реплика – это копия базы данных, изменения в которой синхронизируются с главной базой данных (master database). Объект Replica используется для создания новых реплик, модификации свойств существующих реплик и синхронизации изменений с другими репликами. Объект JetEngine применяется для сжатия баз данных и обновления данных из кэша памяти.