Концепция ActiveX Data Objects (ADO) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Концепция ActiveX Data Objects (ADO)



Фирма Microsoft в середине девяностых приступила к работе с технологией OLE DB. Однако OLE DB представляет интерфейс системного уровня и предназначена для использования, в первую очередь, системными программистами. Она чрезвычайно сложна и требует от программистов досконального знания устройства операционной системы, что существенно снижает продуктивность работы. С целью облегчить жизнь прикладным программистам Microsoft создала для работы с OLE DB интерфейс высокого уровня, называемый ActiveX Data Object (ADO), ориентированный на использование в прикладных программах для доступа к базам данных.

Основным достоинством ADO является ее естественная ориентация на создание «облегченного» клиента. На машине сервера устанавливается провайдер данных - некоторая надстройка над специальной технологией OLE DB, «понимающая» запросы объектов ADO и «умеющая» переводить эти запросы в нужные действия с данными. Взаимодействие компонентов ADO и провайдера осуществляется на основе универсальной для Windows технологии ActiveX, причем провайдер реализуется как

 

 

Рис.3. Схема связи с объектом ADO в C++

Компоненты ADO в палитре компонентов C++ расположены на одноименной вкладке ADO и представляют собой объекты с привычными для C++ свойствами, методами и событиями. Далее приводится краткое описание компонент ADO, используемых при написании дипломной работы.

Схема связи с объектом ADO в C++

На машине клиента располагаются связные компоненты TADOConnection и компоненты-наборы данных TADOTable, TADOQuery, а также не показанные на Рис. 3 компоненты-наборы TADODataSet. Каждый из этих компонентов может связываться с провайдером данных либо с помощью связного компонента TADOConnection, либо минуя его и используя собственное свойство ConnectionString. Таким образом, TADOConnection играет роль концентратора соединений с источником данных компонентов-наборов. Компоненты-наборы с помощью хорошо известных по предыдущим версиям C++ компонентов-источников TDataSource и визуализирующих компонентов TDBGrid, TDBMemo, TDBEdit и т.п. обеспечивают необходимый интерфейс с пользователем программы.

Установление связи с объектом ADO

Установление связи с объектом ADO является ключевым моментом всей технологии. Каждый компонент имеет два свойства, с помощью которых он может установить связь с объектом ADO: Connection и ConnectionString. В первое помещается ссылка на специальный связной компонент TADOConnection, играющий роль концентратора соединения с объектом ADO, во вторую — собственно строка связи. Эти свойства взаимоисключающие, то есть установка значения в одно из них ведет к очистке второго.

Структура строки связи

Создаваемая тем или иным способом строка связи несет в себе множество (не менее двух) параметров, отделенных друг от друга точкой с запятой. Собственно в технологии ADOиспользуются лишь четыре из них, остальные нужны для идентификации пользователя при доступе к серверным БД и для настройки некоторых параметров ODBC-драйверов.

Формирование строки связи

Для соединения с базой данных используется стандартный компонент C++ Builder – ADOConnection, который находится на вкладке ADO палитры компонентов. Компонент относится к группе не визуальных компонентов, то есть во время работы приложения он не виден. Настроить соединение с сервером базы данных можно сделать двумя способами: с помощью окна Инспектора объектов на эапе проектирования и программными строчка во время выполнения приложения.

Для настройки через окно Инспектора объектов, необходимо для компонента ADOConnection настроить свойство ConnetionString. При щелчке на кнопке с многоточием в строке свойства ConnectionString компонента ADOConnection появляется окно, показанное на Рис.4.


Рис.4. Диалоговое окно для формирования соединения с объектом ADO

У программиста есть две возможности: сослаться на специальный связной файл в первой строке или сформировать описание связи во второй. В первом случае можно использовать один и тот же файл сразу для нескольких соединений, поэтому изменение файла отразится на многочисленных связях, причем, возможно, не в одной программе. Изменение содержимого во второй строке окна влияет только на соответствующий компонент-набор или только на те компоненты, которые будут ссылаться на данный связной компонент и только внутри одной программы.

Установка переключателя Use Connection String позволяет с помощью кнопки Build воспользоваться специальным диалоговым окном с четырьмя вкладками. Вкладка Поставщик данных (Рис.5) используется для выбора механизма, который будет непосредственно взаимодействовать с данными, получая их от клиента и посылая их ему.

Фактически в списке этой вкладки отображается состав провайдеров OLE DB, установленных на машине. Выбор провайдера является определяющим фактором. Для разных типов данных должны использоваться только строго определенные провайдеры. Например, в файл-серверных БД должен использоваться провайдер MicrosoftOLE DB Provider for ODBC driver с предварительной настройкой соответствующего драйвера. Для работы с БД Access выбирается провайдер MicrosoftJet 4.0 OLE DB Provider. Если используется сервер Oracle или MS SQL Server, БД работает совместно соответственно с провайдером MicrosoftOLE DB Provider for Oracle или MicrosoftOLE DB Provider for SQL Server и т. д.. Некоторые типы данных (например, БД InterBase, Informix SQL Server) не имеют провайдеров и поэтому (пока не будут созданы нужные провайдеры) не могут использоваться в технологии ADO. Настройки остальных трех вкладок зависят от выбранного провайдера. В дипломе использовался провайдера MicrosoftJet 4.0 OLE DB Provider.

Рис.5. Настройка связи: выбор провайдера

Вкладка Подключение определяет необходимые связные параметры для выбранного провайдера (Рис.6). В строке «Выберите или введите имя базы данных» надо указать путь к файлу БД (с указанием сетевого каталога). Здесь же можно указать входное имя пользователя и пароль. Для простейшего варианта связи с MicrosoftJet 4.0 OLE DB Provider этих параметров вполне достаточно, поэтому с помощью кнопки «Проверить подключение» можно протестировать созданную связь с базой данных.

Рис.6. Вкладка Подключение окна настройки связи с провайдером

. Для других провайдеров может потребоваться задать ряд дополнительных параметров, например имя используемой базы данных, входное имя и пароль для доступа к серверу БД и т. п.

После щелчка на кнопке OK диалоговое окно формирования параметров связи будет закрыто и в нижней строке окна формирования соединения с объектом ADO появится соответствующий текст. На этом соединение с базой можно считать законченным и закрыть окно.

Настройку соединения с базой данных можно осуществить и программным способом. Для этого необходимо добавить в программу строчку кода:

Adoconnection1->ConnectionString= “Provider=Microsoft.jet.oledb.4.0;

DataSource=c:\\first.mdb;

persist security info=false”;

В первой строке задается провайдер, во второй – путь к подключаемой базе данных. Третья строка persist security означает сохранять информацию о безопасности или нет. В принципе, эта строка не играет особого значения и следует оставить значение false.

Для удобства работы с базой данных следует отключить окна ввода пароля. За это отвечает свойство LoginPromt объекта ADOConnection. Отключить или включить это свойство можно через окно Инспектора объектов, выбрав одноименное свойство. Или же программно:

ADOConnection1->LoginPromt= false;

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

ADOConnection1->Conected= true;

Это все необходимые настройки для компонента ADOConnection, теперь можно переходить к следующему этапу – установки связей с таблицами базы данных.

Компонент ADODataSet

Этот компонент обеспечивает доступ к одной или нескольким таблицам базы данных с помощью запроса типа select. Компонент рассчитан на возврат набора данных, поэтому его нельзя использовать для выполнения подмножества операторов DDL. (В компоненте есть свойство CommandText, однако в него можно поместить только оператор select. Для выполнения DDL - предложений языка SQL можно использовать метод Execute компонента TADOCommand или метод ExecSQL компонента TADOQuery). В отличие от TADOTable, компонент может обращаться не только к одной, но сразу к нескольким таблицам.

Например, чтобы выполнить запрос к двум таблицам с помощью компонента ADODataSet, в свойство CommandText необходимо занести следующий оператор SQL:

SELECT с.CustNo, с.company, o.SaleDate

FROM customer с, orders о

WHERE о.CustNo=c.CustNo

Компонент ADOTable

Этот компонент способен получать и обслуживать набор данных, состоящий из записей единственной физической таблицы БД, имя которой содержит его свойство TableName. Укажем в свойстве Connection компонента ADOTable созданный нами, компонент соединения с базой дынных. Сделать это можно как в окне Инспектора объектов, так и программно. Для того что бы сделать это программно необходимо написать в коде программы следующую строку:

ADOTable1->Connection = ADOConnection1;

Так как у базы данных может быть много таблиц, необходимо указать с какой конкретно таблицей требуется соединение. За это отвечает свойство TableName. Так же как и предыдущее свойство его можно задать программным путем.

ADOTable1->TableName=”Справочник”;

Необходимо активизировать соединение. Для этого надо выставить свойство Active в значение true в окне Инспекторае объектов или же программно:

ADOTable1->Active=true;

Компонент TADOQuery

Компонент предназначен для получения набора записей из одной или нескольких таблиц БД. В него включен специфичный метод ExecSQL, с помощью которого компонент может выполнять предложения языка SQL. Сам запрос формируется в многострочном свойстве SQL.

Компонент Datasource

Этот компонент является контейнером данных, полученных от компонентов ADOTable и ADOQuery. Для него необходимо указать данные какой таблицы или запроса он будет отображать. Сделать это можно выбрав в свойстве Dataset необходимую таблицу (ADOtable).

На этом необходимые настройки можно считать законченными и можно переходить к непосредственной работе с базой данных.

Компонент DBGrid

Этот компонент представляет собой двумерную таблицу, в которой строки представляют собой записи, а столбцы — поля определенной таблицы из базы данных. В компоненте TDBGrid можно отображать произвольное подмножество полей используемого набора данных, но число записей ограничить нельзя — в компоненте всегда присутствуют все записи связанного набора данных. Требуемый набор полей можно составить при помощи специального Редактора столбцов, который открывается при двойном щелчке на компоненте, перенесенном на форму, или кнопкой свойства Columns в окне Инспектора объектов. При помощи кнопки Add All Fields в сетку можно добавить все поля из набора данных.

Для каждого поля можно настроить отображение более детально. Для этого необходимо выделить нужное поле и в инспекторе объектов изменить нужное свойство.

1.2.2.5.2. Технология OLE для работы с приложением Excel

Несмотря на то, что C++ Builder позволяет строить мощные приложения любого назначения, нередко желательно привлекать как вспомогательное средство программы, входящие в состав Microsoft Office. Интеграция С++ Builder и программы Excel является прекрасным средством использования сильные стороны каждого из этих программных продуктов. С++ Builder обеспечивает создание удобного интерфейса пользователя и сколь угодно сложной обработки данных. А Excel является прекрасным инструментом формирования стандартных документов, их печати, пересылке, защиты.

Одним из способов взаимодействия Excel с приложением C++Builder является использование сервера автоматизации OLE. Приложения, использующие данных метод, являются более надежными и универсальными, позволяющими работать с любыми версиями Microsoft Office, не зависимыми от версии C++ Builder и установленными его пакетами. При работе с сервером автоматизации не требуется подключения к приложению каких-то специальных модулей.

Серверы имеют множество объектов, свойств, методов, которыми можно управлять. Метод сервера OlePropertyGet (имя свойства) возвращает значение нужного свойства, имя которого как строка указывается в скобках. Метод сервера OlePropertySet (имя свойства, значение) задает необходимое значение нужному свойству. Метод сервера OleProcedure (имя метода, параметры) вызывает нужный метод, который либо не возвращает никакого результата, либо возвращаемый результат не имеет в данный момент значения. Метод сервера OleFunction (имя метода, список параметров) вызывает нужный метод, который возвращает значение. Для каждого метода используется разное количество параметров (до 32). Для большого количества параметров используется массив Variant. Параметры передаются в той последовательности, в которой они указаны в объявлении метода. Значение необязательного параметра в списке задается Variant::NoParam() – значение параметра по умолчанию. Для последних в списке необязательных параметров значение Variant::NoParam() задавать не требуется. Строковые значения параметров должны иметь тип WideString.



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 838; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.175.180 (0.016 с.)