Объекты данных ActiveX
Эта статья включает список литературы , связанную литературу или внешние ссылки , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( февраль 2013 г. ) |
В вычислительной технике объекты Microsoft ActiveX данных ( ADO ) включают в себя набор модели компонентных объектов (COM) объектов для доступа к источникам данных. Являясь частью MDAC (компоненты доступа к данным Microsoft), он обеспечивает промежуточный уровень между языками программирования и OLE DB (средство унифицированного доступа к хранилищам данных, независимо от того, являются ли они базами данных или нет). ADO позволяет разработчику писать программы, которые обращаются к данным, не зная, как реализована база данных; разработчики должны знать о базе данных только для подключения. Для доступа к базе данных при использовании ADO не требуется никаких знаний SQL , хотя можно использовать ADO для прямого выполнения команд SQL (с недостатком введения зависимости от типа используемой базы данных).
Microsoft представила ADO в октябре 1996 года, позиционируя это программное обеспечение как преемника более ранних объектных уровней Microsoft для доступа к источникам данных, включая RDO (удаленные объекты данных) и DAO (объекты доступа к данным).
ADO состоит из четырех коллекций и двенадцати объектов.
Коллекции АДО
[ редактировать ]- Поля
- Эта коллекция содержит набор объектов Field. Коллекция может использоваться либо в объекте Recordset, либо в объекте Record. В объекте набора записей каждый из объектов поля, составляющих коллекцию полей, соответствует столбцу в этом объекте набора записей. В объекте Record поле может быть абсолютным или относительным URL-адресом, указывающим на пространство имен с древовидной структурой (используется для поставщиков полуструктурированных данных , таких как поставщик Microsoft OLE DB для публикации в Интернете) или как ссылка на связанный по умолчанию объект Stream. с этим объектом Record.
- Характеристики
- Объект может иметь несколько объектов Property, которые содержатся в коллекции Properties объекта.
- Параметры
- Объект команды может иметь несколько команд параметров для изменения его предопределенного поведения, и каждый из объектов параметров содержится в коллекции параметров объекта команды.
- Ошибки
- Все ошибки, созданные поставщиком, передаются в коллекцию объектов Error, а сама коллекция Errors содержится в объекте Connection. Когда операция ADO создает ошибку, коллекция очищается и в коллекции создается новая группа объектов Error.
ADO-объекты
[ редактировать ]- Связь
- Объект подключения — это подключение ADO к хранилищу данных через OLE DB. Объект подключения хранит информацию о сеансе и предоставляет методы подключения к хранилищу данных. Поскольку в некоторых хранилищах данных используются разные методы установления соединения, некоторые методы могут не поддерживаться в объекте соединения для конкретного поставщика OLE DB. Объект соединения подключается к хранилищу данных, используя метод «Открыть» со строкой подключения, которая определяет соединение в виде списка пар ключ-значение (например: «Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog= 'Борейный ветер';Встроенная безопасность='SSPI';"). Начало этой строки подключения должно указывать тип подключения к хранилищу данных, который требуется объекту подключения:
- поставщик OLE DB (например, SQLOLEDB), используя синтаксис «provider=";
- имя файла, используя синтаксис «имя файла =»;
- удаленный провайдер и сервер (см. RDS), используя синтаксис «Удаленный поставщик =» и «Удаленный сервер =»; или
- абсолютный URL-адрес, используя синтаксис «URL="
- Команда
- После того как объект соединения устанавливает сеанс с источником данных, инструкции отправляются поставщику данных через объект команды. Объект команды может отправлять запросы SQL непосредственно поставщику с помощью свойства CommandText, отправлять параметризованный запрос или хранимую процедуру с помощью объекта параметра или коллекции параметров или запускать запрос и возвращать результаты объекту набора данных через Выполнить метод. Существует несколько других методов, которые можно использовать в объекте Command, относящемся к другим объектам, таким как объекты Stream, RecordSet или Connection.
- Набор записей
- Набор записей — это группа записей, которая может поступать либо из базовой таблицы, либо в результате запроса к таблице. Объект RecordSet содержит коллекцию Fields и коллекцию Properties. Коллекция Fields представляет собой набор объектов Field, которые представляют собой соответствующие столбцы в таблице. Коллекция Properties представляет собой набор объектов Property, которые определяют определенные функции поставщика OLE DB. 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 для выбора поля «Имя» из таблицы «Телефонная книга», где «PhoneNumber» равен «555-5555».
dim myconnection, myrecordset, name
set myconnection = server.createobject("ADODB.Connection")
set myrecordset = server.createobject("ADODB.Recordset")
myconnection.open mydatasource
myrecordset.open "Phonebook", myconnection
myrecordset.find "PhoneNumber = '555-5555'"
name = myrecordset.fields.item("Name")
myrecordset.close
set myrecordset = nothing
set myconnection = nothing
Это эквивалентно следующему коду ASP, в котором вместо функций объекта Recordset используется простой SQL:
dim myconnection, myrecordset, name
set myconnection = server.createobject("ADODB.connection")
myconnection.open mydatasource
set myrecordset = myconnection.execute("SELECT Name FROM Phonebook WHERE PhoneNumber = '555-5555'")
name = myrecordset(0)
Поддержка программного обеспечения
[ редактировать ]ADO поддерживается на любом языке разработки, поддерживающем привязку к двоичным COM-интерфейсам. К этим языкам относятся ASP, Delphi , PowerBuilder и Visual Basic для приложений (VBA). Поддержка ADO теперь добавлена в dBase Plus 8 (с ADO).
Наследие
[ редактировать ]ADO.NET заменил ADO точно так же, как C#/.NET заменил C/Win32 в качестве основного режима разработки приложений для Windows. ADO.NET следует тому же шаблону проектирования, что и ADO, что позволяет разработчику ADO легко перейти к платформе .NET.