API компонентной объектной модели для доступа к источникам данных
В вычислительной технике объекты данных ActiveX ( ADO ) от Microsoft включают набор объектов модели компонентных объектов (COM) для доступа к источникам данных. Часть MDAC (компоненты доступа к данным Microsoft), она обеспечивает промежуточный уровень между языками программирования и OLE DB (средство доступа к хранилищам данных, будь то базы данных или нет, единообразно). ADO позволяет разработчику писать программы, которые обращаются к данным, не зная, как реализована база данных; разработчики должны знать о базе данных только для подключения. Для доступа к базе данных при использовании ADO не требуется знания SQL , хотя можно использовать ADO для прямого выполнения команд SQL (с недостатком введения зависимости от типа используемой базы данных).
Microsoft представила ADO в октябре 1996 года, позиционировав это программное обеспечение как преемника более ранних объектных слоев Microsoft для доступа к источникам данных, включая RDO (удалённые объекты данных) и DAO (объекты доступа к данным).
ADO состоит из четырех коллекций и двенадцати объектов.
Коллекции АДО
- Поля
- Эта коллекция содержит набор объектов Field. Коллекция может использоваться как в объекте Recordset, так и в объекте Record. В объекте Recordset каждый из объектов Field, составляющих коллекцию Fields, соответствует столбцу в этом объекте Record set. В объекте Record поле может быть абсолютным или относительным URL-адресом, указывающим на древовидное пространство имен (используемое для полуструктурированных поставщиков данных, таких как поставщик Microsoft OLE DB для публикации в Интернете) или ссылкой на объект Stream по умолчанию, связанный с этим объектом Record.
- Характеристики
- Объект может иметь более одного объекта Property, которые содержатся в коллекции Properties объекта.
- Параметры
- Объект Command может иметь несколько команд Parameter для изменения его предопределенного поведения, и каждый из объектов Parameter содержится в коллекции Parameters объекта Command.
- Ошибки
- Все ошибки, созданные поставщиком, передаются в коллекцию объектов Error, в то время как сама коллекция Errors содержится в объекте Connection. Когда операция ADO создает ошибку, коллекция очищается, и в коллекции создается новая группа объектов Error.
Объекты АДО
- Связь
- Объект соединения — это соединение ADO с хранилищем данных через OLE DB. Объект соединения хранит информацию о сеансе и предоставляет методы соединения с хранилищем данных. Поскольку некоторые хранилища данных имеют разные методы установления соединения, некоторые методы могут не поддерживаться в объекте соединения для конкретного поставщика OLE DB. Объект соединения подключается к хранилищу данных с помощью своего метода «Open» со строкой соединения, которая определяет соединение как список пар ключ-значение (например: «Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';»). Начало этой строки соединения должно идентифицировать тип соединения с хранилищем данных, который требуется объекту соединения:
- поставщик OLE DB (например, SQLOLEDB), использующий синтаксис «provider=";
- имя файла, используя синтаксис «имя файла=»;
- удаленный поставщик и сервер (см. RDS), используя синтаксис «Удаленный поставщик=» и «Удаленный сервер=»; или
- абсолютный URL, использующий синтаксис "URL="
- Команда
- После того, как объект соединения устанавливает сеанс с источником данных, инструкции отправляются поставщику данных через объект команды. Объект команды может отправлять запросы SQL напрямую поставщику с помощью свойства CommandText, отправлять параметризованный запрос или хранимую процедуру с помощью объекта Parameter или коллекции Parameters или выполнять запрос и возвращать результаты объекту набора данных с помощью метода Execute. Существует несколько других методов, которые можно использовать в объекте Command, связанных с другими объектами, такими как объекты Stream, RecordSet или Connection.
- Набор записей
- Recordset — это группа записей, которая может быть получена из базовой таблицы или в результате запроса к таблице. Объект RecordSet содержит коллекцию Fields и коллекцию Properties. Коллекция Fields — это набор объектов Field, которые являются соответствующими столбцами в таблице. Коллекция Properties — это набор объектов Property, который определяет определенную функциональность поставщика OLE DB. RecordSet имеет множество методов и свойств для проверки данных, которые в нем существуют. Записи можно обновлять в recordset, изменяя значения в записи и затем вызывая метод Update или UpdateBatch.
- Немедленный
- Набор записей блокируется с помощью блокировки adLockOptimistic или adLockPessimistic. Данные обновляются в источнике данных после изменения записи и вызова метода Update.
- Партия
- Набор записей блокируется с помощью adLockBatchOptimistic, и каждый раз при вызове Update данные обновляются во временном буфере. Наконец, при вызове UpdateBatch данные полностью обновляются обратно в источник данных. Это имеет то преимущество, что все это делается в памяти, и если возникает проблема, то вызывается UpdateCancel, и обновления не отправляются в источник данных.
- Сделка
- Если поставщик OLE DB позволяет, можно использовать транзакции. Чтобы начать транзакцию, программист вызывает метод BeginTrans и выполняет требуемые обновления. Когда все обновления выполнены, программист вызывает метод CommitTrans. RollbackTrans можно вызвать для отмены любых изменений, сделанных внутри транзакции, и отката базы данных до состояния до начала транзакции.
- Записывать
- Этот объект представляет одну запись в базе данных и содержит коллекцию полей. RecordSet состоит из коллекции объектов Record.
- Транслировать
- Поток, в основном используемый в объекте RecordSet, является средством чтения и записи потока байтов. Он в основном используется для сохранения набора записей в формате XML, для отправки команд поставщику OLE DB в качестве альтернативы объекту CommandText и для хранения содержимого двоичного или текстового файла.
- Параметр
- Параметр — это средство изменения поведения общей функциональности, например, хранимой процедуре могут передаваться различные параметры в зависимости от того, что необходимо сделать; это называется параметризованными командами.
- Поле
- Каждый объект Record содержит много полей, а объект RecordSet также имеет соответствующий объект Field. Объект Field объекта RecordSet соответствует столбцу в таблице базы данных, на который он ссылается.
- Свойство
- Этот объект специфичен для поставщика OLE DB и определяет возможность, которую реализовал поставщик. Объект свойства может быть либо встроенным свойством — это четко определенное свойство, уже реализованное ADO и, таким образом, не может быть изменено — или может быть динамическим свойством — определенным базовым поставщиком данных и может быть изменено
- Ошибка
- Когда во время использования ADO возникает ошибка поставщика OLE DB, в коллекции Errors создается объект Error. Однако другие ошибки не попадают в объект Error. Например, любые ошибки, возникающие при манипулировании данными в объекте RecordSet или Field, сохраняются в свойстве Status.
Основное использование
Для доступа к данным и управления ими с помощью ADO необходимо выполнить несколько основных шагов:
- Создайте объект подключения для подключения к базе данных.
- Создайте объект набора записей для получения данных.
- Открыть соединение
- Заполните набор записей, открыв его и передав желаемое имя таблицы или оператор SQL в качестве параметра функции открытия .
- Выполните все необходимые действия по поиску/обработке полученных данных.
- Зафиксируйте внесенные вами изменения в данные (если таковые имеются) с помощью методов Update или UpdateBatch .
- Закрыть набор записей
- Закрыть соединение
Пример ASP
Ниже приведен пример ASP , использующий ADO для выбора поля «Имя» из таблицы «Телефонная книга», где «Номер телефона» равен «555-5555».
dim myconnection , myrecordset , name set myconnection = server.createobject ( " ADODB.Connection " ) set myrecordset = server.createobject ( " ADODB.Recordset " ) myconnection.open mydatasource myrecordset.open " Телефонная книга " , myconnection myrecordset.find " PhoneNumber = ' 555-5555 ' " name = myrecordset.fields.item ( " Name " ) myrecordset.close установить myrecordset = ничего установить myconnection = ничего
Это эквивалентно следующему коду ASP, который использует простой SQL вместо функциональности объекта Recordset:
dim myconnection , myrecordset , name set myconnection = server.createobject ( "ADODB.connection" ) myconnection.open mydatasource set myrecordset = myconnection.execute ( " ВЫБЕРИТЕ ИМЯ ИЗ ТЕЛЕФОННОЙ КНИГИ, ГДЕ PhoneNumber = ' 555-5555 ' " ) name = myrecordset ( 0 )
Поддержка программного обеспечения
ADO поддерживается в любом языке разработки, который поддерживает привязку к двоичным интерфейсам COM. Эти языки включают ASP, Delphi , PowerBuilder и Visual Basic for Applications (VBA). Поддержка ADO теперь добавлена в dBase Plus 8 (с ADO)
Наследие
ADO.NET заменил ADO таким же образом, как C#/.NET заменил C/Win32 в качестве основного режима для разработки приложений Windows. ADO.NET следует тому же шаблону проектирования, что и ADO, что позволяет разработчику ADO легко перейти на платформу .NET.
Смотрите также
- АДО.НЕТ
- Сравнение ADO и ADO.NET
- MSDAIPP
Ссылки
Внешние ссылки
- Страница Microsoft ADO
- Строки подключения к базе данных Архивировано 26 января 2021 г. на Wayback Machine
- Краткий справочник DevGuru ADO