Лабораторная работа № 12-13 СОЗДАНИЕ ПРИЛОЖЕНИЙ БАЗ ДАННЫХ

Цель работы - овладение методами разработки приложений для работы с базами данных с помощью библиотеки MFC студии разработчика Visual С++.

Visual С++ поддерживает две технологии разработки баз данных и приложений, использующих базы данных:

а)с использованием библиотеки MFC и Microsoft ODBC (Open Database Connectivity);

б)с использованием классов DAO (Data Access Objects) библиотеки MFC.

Различия в этих подходах не так уж и велики. Вместо ODBC - классов CDatabase и CRecordset следует использовать аналогичные классы DAO: CDaoDatabase CDaoRecordset. Эти классы очень похожи, а имена многих методов совпадают, так что любое ODBC-приложение легко преобразовать в DAO-приложение, изменив имена классов и выполнив небольшую модификацию исходного кода. Однако, преобразование DAO-приложений в ODBC-приложения в ряде случаев затруднительно из-за больших возможностей, предоставляемых классами DAO.

Классы DAO представляют собой наборы OLE-интерфейсов, являющихся спецификациями чисто виртуальных функций. В библиотеки MFC имеется шесть таких наборов:

CDaoRecordView;

CDao Workspace;

CDaoDatabase;

CDaoRecordset;

CDaoTableDef;

CDaoQueryDef.

В отличие от OLE-интерфейсов они не начинаются с буквы I. Одна из возможных реализаций этих интерфейсов оформлена как COM-модуль DAO3032.DLL, который подсоединяется к той же DLL-библиотеки ядра Jet, которая обслуживает СУБД Microsoft Access.

Выбор вариантов создания приложений для баз данных очень большой: от приложений для персональных баз данных до чисто клиентских приложений. Выбор очевиден только в двух случаях: классы MFC ODBC для работы с Microsoft SQL Server 6.x, а классы MFC DAO для работы с данными MDB Microsoft Access 97. Эти сочетания весьма эффективны, так как они создавались друг для друга. При выборе вариантов реализации следует учитывать такие факторы, как типы источников данных, требования по надежности, сколько человек должны иметь доступ к данным одновременно, гибкость пользовательского интерфейса, наличие и тип сети. В любом случае, прежде чем начать создание основного проекта, следует тщательно отладить приложения-прототипы, включив в них большое число рабочих элементов основного проекта. Моделирование различных вариантов построения приложения и использования двух наборов классов библиотеки MFC позволит найти приемлемое решение.

Общие функциональные возможности наборов классов MFC для баз данных таковы:

1. Оба набора классов поддерживают прокрутку набора записей.

2. Классы ODBC используют нижележащий драйвер.

3. Классы DAO лучше используют MDB, что очень удобно для баз данных ISAM-типа, а классы
ODBC лучше подходят для работы с серверными данными.

4. Оба набора классов поддерживают транзакции, при этом классы ODBC на уровне базы данных, а
классы DAO на уровне рабочей области (Workspace).

5. Функции обновления наборов записей практически идентичны для классов обоих типов.

6. Оба набора классов поддерживают блокировку записей при обновлении.

7. Оба набора классов поддерживают определение изменения содержимого полей.

8. Оба набора классов предоставляют операции Move.

9. Оба набора классов позволяют задать таймаут обработки запросов.
10.Оба класса могут непосредственно исполнять операторы SQL.

Классы ODBC являются много точными, используют групповую выборку записей (bulk fetch), дополнительные навигационные возможности, а также обеспечивают улучшенную поддержку консольных приложений для баз данных.

В свою очередь, классы DAO поддерживают объекты типа Workspace, TableDef и QueryDef, класс CDaoDatabase обеспечивает создание объектов TableDef, QueryDef и Relation, а некоторые другие свойства делают эти классы более удобными в использование: поля и индексы во время работы, средства проверки данных и т. п.

Маханова А. К.

Задание №1.

Создать приложение для просмотра базы данных Access, выполнив следующие действия:

1. Создать с помощью системы Access базу данных db.mdb для хранения информации о студентах в виде таблицы Students с двумя колонками: имя студента Name и курс Grade.

2. Заполнить таблицу произвольными данными, введя несколько записей о студентах.

3. С помощью мастера приложений АррWizard создать остов SDI-приложения с именем DB, установив переключатель в Database view with file support и задав источник db.mdb типа DAO, в котором выбрана таблица Students. Включить Dynaset.

4. С помощью редактора ресурсов в главное окно с идентификатором IDD_DB_FORM поместить командную кнопку "Вывести поля текущей записи " и два текстовых поля с именами "Имя" и "Курс".

5. Запустив мастер ClassWizard, связать командную кнопку с обработчиком OnButton1(), а переменные m_text1 и m_text2 типа CString - с содержимым двух текстовых полей.

6. Убедиться, что для доступа к полям текущей записи мастер AppWizard создал меню Record с командами First Record, Previous Record, Next Record и Last Record, панель инструментов с соответствующими кнопками управления, а также указатель на текущую запись m_pSet и переменные для доступа к полям: m_Name и m_Grade.

7. В облик приложения CD View, который является производным от CDaoRecordView (производный, в свою очередь от класса CFormView), включить код обработчика OnButton1():

void CDBView::OnButton1()

{m_text1= m_pSet->m_Name; m_text2= m_pSet->m_Grade; UpdateData(FALSE);

}

8. Скомпилировать проект и произвести просмотр таблицы с информацией о студентах.

Задание №2.

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

1. Создать и заполнить информацией несколько таблиц базы данных Access.

2. Создать остов SDI-приложения с именем Odbc, выбрав базовый класс облика CScrollView и установив переключатель Header Files Only.

3. C помощью мастера ClassWizard создать класс набора записей COdbcSet как производный от класса CRecordset, а затем щелкнуть по кнопке Ok

4. В диалоговом окне Database Options поле ODBC установить драйвер Microsoft Access, переключатели Dynaset и Bind all columns, а затем щелкнуть по кнопке Ok.

5. В открывшемся диалоговом окне Select Database указать имя базы данных Student Registration и щелкнуть по кнопке Ok.

6. В диалоговом окне Select Database Tables выбрать таблицу Student с полями StudentID, Name и GradYear, щелкнуть по кнопке Ok для создания объекта COdbcSet.

7. Убедиться, что в классе COdbcSet сформированы элементами данных для столбцов таблицы:
m_StudentID, m_Name и m_GradYear.

8. Добавить в объявление класса CОdbcDoc элемент данных:

COdbcSet m_COdbcSet;

9. В файл OdbcDoc.cpp добавить строку

#include "OdbcSet.h" непосредственно перед строкой

#include "OdbcDoc.h" 10.Объявить в OdbcView.h указатель на набор записей:

COdbcSet* m_pSet;

11.Отредактируйте методы OnDraw и OnInitialUpdate в файле OdbcView.cpp:
void COdbcView::OnDraw(CDC* pDC)
{ int y=0;
CString str;
if(m_pSet->IsBOF()) //-если набор записей пуст

return;

m_pSet->MoveFirst(); while(!m_pSet->IsEOF())

{ str.Format("%ld",m_pSet->m_StudentID);

pDC->TextOut(0,y,str); pDC->TextOut(500,y,m_pSet->m_Name); str.Format("%d",m_pSet->m_GradYear); pDC->TextOut( 1 000,y,str); m_pSet->MoveNext(); y+=200; } }

void COdbcView: :OnInitialUpdate() { CView:: OnInitialUpdate(); CSize sizeTotal(8000,10500); SetScrollSizes(MM_HIENGLISH,sizeTotal); m_pSet=&GetDocument()->m_COdbcSet; if(m_pSet->IsOpen())

m_pSet->Close(); m_pSet->Open();

}

12. Добавить в OdbcView.cpp строку

#include "OdbcSet.h" непосредственно перед строкой

#include "OdbcDoc.h"

13.Скомпилировать проект и запустить приложение.

Контрольные вопросы:

1. Назвать и дать сравнительный анализ двух наборов классов библиотеки MFC для работы с базами данных.

2. Как реализуется просмотр таблицы Access?

Наши рекомендации