Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Выбор между классами ODBC и DAO




Вы получили общее представление о классах ODBC Visual C++ и узнали о том, как они используются в приложениях, созданных с помощью мастера AppWizard. Visual C++ также включает полный набор классов DAO, которые можно использовать для создания БД-приложений. DAO во многих отношениях является для классов ODBC суперклассом, включая большинство функциональных возможностей ODBC и добавляя при этом множество своих собственных. К сожалению, хотя классы DAO и могут работать с источниками данных ODBC, для которых существуют ODBC-драйверы, такое их применение не особенно эффективно. По этой причине DAO-классы больше подходят для создания программных приложений, оперирующих файлами баз данных формата .mdb фирмы Microsoft, создаваемых приложением Microsoft Access. Файлы других форматов, с которыми можно, используя классы DAO, работать напрямую, создаются приложениями FoxPro и Excel.

Классы DAO, которые используют приложение Microsoft Jet Database Engine, настолько похожи на классы ODBC, что во многих случаях можно конвертировать программы ODBC в DAO путем простого изменения названия класса в тексте программы: CDatabase изменяется на CDaoDatabase, CRecordset изменяется на CDaoRecordset, a CRecordView изменяется на CDaoRecordView. Однако между классами ODBC и DAO имеется существенное различие в том, как реализуются системные библиотеки. ODBC-классы реализованы как набор модулей DLL, в то время как классы DAO реализованы в виде объектов OLE. Использование объектов OLE делает систему DAO несколько более современной в сравнении с ODBC, по крайней мере, в отношении архитектуры.

Хотя система DAO реализована в виде объектов OLE, вам не придется беспокоиться о работе с подобными объектами напрямую. Входящие в MFC классы DAO берут обработку всех деталей управления на себя, предоставляя данные и методы, обеспечивающие взаимодействие с объектами OLE. Класс CDaoWorkspace обеспечивает с помощью статических методов прямой доступ к объектам ядра базы данных DAO. Хотя MFC берет управление рабочей областью на себя, можно использовать ее данные и методы для непосредственной инициализации связи с базой данных.

Еще одно отличие состоит в том, что классы DAO предоставляют болеемощный набор функций, которые можно использовать для манипулирования базой данных. Эти более мощные методы позволяют выполнять с базами данных сложные операции, используя небольшой объем исходного текста на C++ или SQL-выражения, написанные непосредственно разработчиком.

• Обе системы (ODBC и ОАО) могут работать с ODBC-источниками данных. Однако DАО менее эффективна при таком применении, так как больше подходит для работы с файлами баз данных формата .mdb.

• Мастер AppWizard может создать заготовку БД-приложения, используя либо классы ODBC, либо классы DАО. Выбор типа создаваемого приложения зависит, по крайней мере, частично, от баз данных, с которыми вы будете работать.

• Обе системы — и ODBC, и DAO — используют для соединения с базой данных, к которой осуществляется доступ, объекты классов баз данных MFC. В ODBC такой класс базы данных называется CDatabase, а в системе DAO — CDaoDatabase. Хотя эти классы и имеют разные названия, DAО-класс содержит множество членов, подобных тем, которые можно обнаружить в ODBC-классе.

• Обе системы, ODBC и DAO, используют объекты класса выборки данных для хранения записей, выбранных на текущий момент. В ODBC такой класс выборки данных называется CRecordset, а в системе DAO— CDaoRecordset. Хотя эти классы и имеют разные названия, DAO-класс выборки данных содержит практически все члены класса ODBC. Кроме того, DAO-класс имеет большой набор дополнительных методов.

• Системы ODBC и DAO используют схожие методики просмотра содержимого источника данных, а именно: в обеих системах приложение должно создать объект базы данных, создать объект выборки данных, а затем вызвать методы соответствующего класса для манипулирования базой данных.

Различия между системами ODBC и DAO состоят в следующем.

• Хотя входящие в MFC классы ODBC и DAOпохожи (иногда даже очень), некоторые аналогичные методы имеют разные имена. Кроме того, классы DAO включают много методов, которым нет аналогов в классах ODBC.

• В системе ODBC для определения опций, которые могут использоваться при открытии выборки данных, используются макросы и перечисления, тогда как в DAO для этих целей определены константы.

• Большое количество существующих ODBC-драйверов делает систему ODBC пригодной для работы с множеством файлов баз данных различных форматов, в то время как система DAO больше подходит для приложений, работающих только с файлами формата . mdb.

• Система ODBC реализована в виде набора DLL-модулей, а DAO реализована как набор объектов OLE.

• В ODBC объект класса CDatabase напрямую взаимодействует с источником данных. В DAO объект класса CDaoWorkspace занимает промежуточное положение между объектами классов CDaoRecordset и CDaoDatabase, что дает возможность рабочей среде взаимодействовать со многими объектами класса баз данных.

20. Доступ к данным в Visual C++. Технологии UDA, OLE DB.

Первоначально OLE была задумана как технология интеграции программных продуктов, входящих в комплект Microsoft Office. Предшественницей OLE является реализованная в Windows технология динамического обмена данными DDE (Dynamic Data Exchange), до сих пор широко применяемая в этой среде.

Однако многие разработчики не без оснований считают, что DDE трудно использовать, поскольку это технология низкого уровня. По существу, DDE представляет собой модель взаимодействия процессов – протокол, с помощью которого приложение может организовать канал обмена данными с DDE- сервером, находящимся на той же машине. DDE – это асинхронный протокол.

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

вызов функции, так как нужно учитывать вероятность нарушения связи, тайм-ауты и другие ошибки, которые приложение должно распознавать и исправлять.

Низкая популярность DDE вынуждала Microsoft искать различные способы его усовершенствования.

Для решения этой проблемы архитекторы OLE создали группу технологий,область применения которых гораздо шире составных документов (DDE). Основу OLE 2 составляет важнейшая из этих технологий — Модель многокомпонентных объектов (Component Object Model — СОМ). Новая версия OLE не только

обеспечивает поддержку составных документов лучше, чем первая, но и, несомненно, идет куда дальше простого объединения документов, созданных в разных приложениях. OLE 2 позволяет по-новому взглянуть на взаимодействие

любых типов программ.

Новые возможности программных систем многим обязаны СОМ,

предоставившей общую парадигму взаимодействия программ любых типов: библиотек, приложений, системного программного обеспечения и др. Вот почему подход, предложенный СОМ, можно использовать при реализации практически любой программной технологии, и его применение дает немало существенных

преимуществ.

 

Классы ODBC.

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

Современные версии Visual C++ включают классы, базирующиеся на механизмах ODBC (Open Database Connectivity — открытаясвязь с базами данных) и DAO (Data Access Objects— объекты доступа к данным).

Основные понятия теории баз данных

Однофайловая модель базы данных:

В простейшем представлении база данных является набором записей. Каждая запись в базе данных состоит из полей, а в каждом поле содержится информация, связанная с этой конкретной записью. В такой базе данных каждому клиенту соответствует одна запись. Она состоит из шести полей: ИМЯ, УЛИЦА, ДОМ, ГОРОД, ИНДЕКС (почтовый индекс) и ТЕЛЕФОН (номер телефона) (пример одной записи). Вся БД будет состоять из большого кол-ва подобных записей. Данный тип СУБД исп-т однофайловую модель базы данных (flat database model). Однако в случае больших баз данных, одноф-я модель может привести к дублир-ю инф-и и нерацион-му исп-ю памяти.

Реляционная модель базы данных:

Реляционная (от relation — отнош-е, связь) БД подобна неск-м связ-м одноф-м БД. При работе с реляционной БД можноне только выполнять поиск отдельн. записей, как это дел-ся в одноф-й БД, но и устанавл-ть связь одного набора записей с другим. Это позволяет организовать гораздо более эф-ное хранение данных. Каждый набор записей в реляц. БД наз-ся таблицей (table). Связи устан-ся с исп-м ключей (key), т.е. полей, значения которых хар-ют запись. (Напр, идентификационный код служащего мог бы быть ключом для таблицы служащих.)

Доступ к базе данных

Доступк данным в реляц-х СУБД осущ-ся с исп-м опред-го командн. языка. Чаще всего для доступа к БД исп-сяязык SQL, который прим-ся при работе не только с СУБД для настольных комп-в, но и с громадными БД, исп-ми в банках, учебных завед-х, промышл-х корпорациях и других учр-х, в кот-х необх-мо решать сложнейшие задачи обр-ки инф-ции. Используя язык, подобный SQL, можно извлекать данные, представл-е полями записей из одной или неск-х таблиц, кот-е объед-ны в реляц. БД.

Классы ODBC Visual C++

Создавая с помощью мастера Visual C++ AppWizard прог-му, работ-ю с БД, вы получаете в итоге прилож-е, широко использ-е различные классы ODBC из состава библиотеки MFC. Наиболее важными из этих классов являются CDatabase, CRecordset и CRecordView.

Мастер AppWizard автомат-ки генерирует текст прог-мы, необх-й для coздания объекта класса CDatabase. Этот объект обесп-т связь м/у созд-м прилож-м и источником данных, с которым оно работает. В большинстве случаев использование класса CDatabase в прог-х, сгенерир-х AppWizard, прозрачно для программиста. Вся необх-я обр-ка обеспеч-ся самой сист-й упр-я.

Кроме того, AppWizard генерирует текст программы создания объекта класса CRecordset, используемого в приложении. Объект класса CRecordset представляет собой реальные данные, выбранные в настоящий момент из источника данных, а его методы обеспечивают выполнение операций с этими данными. В дальнейшем данные, выбранные программой в текущий момент, будем называть выборкой данных.

И наконец, объект класса CRecordView в БД-программе занимает место объекта класса представления, с которым постоянно приходится иметь дело в приложениях, созданных с помощью мастера AppWizard. Окно, создаваемое объектом класса CRecordView, подобно диалоговому окну, выполн-му роль средства общения пользователя с приложением. Это диалоговое окно обеспечивает в приложении связь с объектом класса CRecordset, осуществляя обмен инф-й между программой, элементами управления окна и выборкой данных. Когда с помощью мастера AppWizard создается новое БД-приложение, на программиста возлагается обязанность поместить в окно объекта CRecordView элементы управления, способные выполнять ввод и редактирование данных. Как правило, это текстовые поля. Такие элементы управления следует связать с полями записей базы данных, которые они представляют, для того, чтобы приложение направляло данные, выбранные для просмотра, куда следует.

Создание БД-программы на основе классовODBC:

Создать с помощью Visual C++ простую БД-программу, использующую классы ODBC, совсем несложно — для этого нужно выполнить всего несколько операций.

1. Зарегистрировать базу данных всистеме.

2.Исп-я мастер AppWizard, создать заготовку БД-приложения.

3.Добавить в заготовку приложения программный код, реализующий функции, которые AppWizard автоматически не формирует.

 

 

Регистрация БД. Создание заготовки приложения.

Прежде чем приступить к созданию БД-приложения, необходимо БД, с кот-й вы хотите работать, зарег-ть в кач-ве ист-ка данных, доступ к которому будет осущ-ся ч/з драйвер ODBC. Дляэтого выполните следующие действия.

1. Создайте на жестком диске папку с именем Database и расположите в ней файл 1.mdb. Если у вас нет готового файла, можно самост-но сформ-ть в Microsoft Access три таблицы.

Файл 1.mdb предст-т собой БД, созд-ю в СУБД Microsoft Access.ЭтаБДбудет исп-ся в качестве источника данных.

2. Из меню Start в Windows откройте Control Panel. В ее окне сделайтедвойной щелчок на пиктограмме 32-Bit ODBC. Раскроется, диалоговое окно ODBC Data Source Administrator. Если в представленном в этом окне списке отсутствует необходимый вам драйвер (в данном примере — Microsoft Access Driver),выполните следующий пункт. В противном случае перейдите сразу к п. 4

3. Щелкните на кнопке Add. Появится диал. окно Create New Data Source. Из списка драйверов выберите Microsoft Access Driver, а затем щелкните на кнопке Finish (Конец).

Теперь Microsoft Access Driver явл-ся тем ODBC-драйвером, кот-й будет связан с ист-м данных, предназн-м для работы с прилож-м.

4. В диалоговом окне ODBS Data Source Administrator выделите строку Microsoft Access 97 Database и щелкните на кнопке Configure. Когда раскроется диалоговое окно ODBC Microsoft Access 97 Setup, введите значение Department Store в поле Data Source Name (имя источника данных) и значение Department Store Sample в поле Description (Описание).

Имя источника данных предназ-но для идентифик-и каждого из созд-х источников данных. Поле Description дает возможность ввести более детальную информацию о созданном источнике данных.

5. Щелкните на кнопке Select. Появится окно Select Database (Выбор базы данных), предназн-е для поиска и выборки файла. Отыщите на жестком диске и выберите файл 1.mdb.

6. Для завершения работы по выбору базы данных щелкните на кнопке ОК. Теперь в системе установлен доступ к файлу БД 1.mdb с помощью драйвера ODBC Microsoft Access Driver.

Создание заготовки для приложения 123 (допустим):

Теперь, когда источник данных создан и зареген, пришло время создания заготовки приложения.

1.В строке меню Visual Studio выберите команду File--New. Щелкните на корешке вкладки Projects.

2. В списке выберите значение MFC AppWizard (ехе) и введите значение 123 в поле Name. Щелкните на ОК. Появится диалог. окно MFC AppWizard Step 1.

3. Для того чтобы гарантир-ть, что приложение 123 не позволит открыть более одного окна, установите флажок опции Single document. Щелкните на кнопке Next.

4. Для того чтобы AppWizard сгенерир-л классы, необх-е для просмотра содерж-го БД, установите переключатель Database view without file support (Просмотр БД без поддержки работы с файлами). Приложение не будет созд-ть или исп-ть никаких доп-х файлов, кроме файла БД, поэтому оно не нужд-ся в поддержке работы с файлами (механизма сохр-я/восстан-я). Для подсоединения приложения к созданному ранее источнику данных щелкните на кнопке Data Source (Источник данных).

5. Разверните в диалоговом окне Database Options список источников данных ODBC и выберите источник данных Department Store. Щелкните на кнопке ОК.

6. Выберите в диалоговом окне Select Database Tables таблицу и щелкните на ОК. Вновь раскроется диал. окно Step 2, в котором сразу под кнопкой Data Source будут выведена инф-я о подключенном источнике данных. Теперь таблица наша источника данных связана с создав-м прилож-м 123. Щелкните на кнопке Next и переходите к следующему этапу настройки.

7. Щелкнув на кнопке Next, примите установку по умолчанию No compound document support (He поддерживать сост-е документы).

8. В диалоговом окне MFC AppWizard - Step 4 of 6 сбросьте флажок опции Printing and print preview (Печать и предварительный просмотр распечатки). Next.

9. Next, примите установки по умолчанию в окне MFC AppWizard - Step 5 of 6. На след-м, шестом этапе, просто щелкните на кнопке Finish, завершив процесс задания устан-к для прилож-я 123.

10.ОК, после чего мастер AppWizard создаст заготовку прилож-я 123.

 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 246.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...