Рефераты. Создание приложения ODBC

Создание приложения ODBC

Лабораторная работа №6.

 

                  Тема: Создание приложения ODBC.

 

1. Проект MFC AppWizard.

 

Прежде всего надо создать (или выбрать) саму базу данных. Первым шагом на этом пути является выбор в качестве проекта MFC AppWizard рис. 1.



Рис.1




Рис.2  Первое окно мастера MFC AppWizard


Начнем с создания самого простого приложения для работы с базой данных. Поэтому выберите переключатель Single document и нажмите кнопку Next. В результате мы перейдем к самому интересному для нас окну мастера MFC AppWizard — Step 2 of 6, показанному на рис.3 — именно здесь мы будем определять параметры базы данных.

Первое, что сразу бросается в глаза — это группа переключателей What database support would you like to include? (Какую поддержку базы данных вы хотите включить в проект) и кнопка Data Source... (Источник данных). Сначала рассмотрим поддержку. Здесь возможны четыре варианта:

·        None (Нет) — не обеспечивается поддержка баз данных (по умолчанию). Не используйте этот переключатель, если есть хоть малейший шанс, что приложению потребуется работа с базой данных — добавление такой поддержки позднее потребует значительных усилий.

·        Header files only (Только заголовочные файлы) — AppWizard создает и включает файл заголовка <afxdb.h>, обеспечивая основную поддержку базы данных. Вы можете создавать наборы записей (recordset) и затем проверять и модифицировать их. При выборе этого переключателя, если в дальнейшем потребуется обеспечить работу с базами данных, основную работу можно будет "поручить" мастеру ClassWizard.

·        Database view without file support (Просмотр базы данных без файловой поддержки) — предписывает AppWizard создать основанное на формах приложение, в котором просмотр и модификация записей производится через набор записей. Приложение не поддерживает сериализацию документов, так как большинство приложений баз данных работает на основе записей быстрее, чем на

              основе файлов.

·        Database view with file support (Просмотр базы данных с файловой поддержкой) — предписывает создать, основанное на формах приложение, в котором просмотр и модификация записей также производится через набор записей. В данном случае приложение поддерживает сериализацию, что может использоваться, например, для обновления файла настроек пользователя.




Рис. 3

Выберите переключатель Database view with file support.


Теперь необходимо указать источник данных, с которым мы будем работать. Для этого нажмите кнопку Data Source..., после чего откроется диалоговое окно Database Options (Параметры базы данных), показанное на рис.4



Рис.4 Диалоговое окно Database Options


 Теперь требуется выбрать один из переключателей Recordset type (Тип набора записей). Набор записей (Recordset) — это, говоря несколько упрощенно, выборка из таблицы (или запроса) базы данных.

Существуют три вида набора записей:


·        Snapshot (Моментальный снимок) — статическая копия данных, которые содержатся в одной или нескольких таблицах базы данных. При выборе этого переключателя результат выполнения запроса будет загружен в один мгновенный список, т. е. вы получаете полную картину интересующего вас содержимого базы данных и можете использовать ее в качестве основы для последующей работы. Этот тип набора записей используется в основном для поиска и обобщения данных, и у него есть три основных недостатка. Во-первых, вы не увидите обновлений, если они сделаны по сети другими пользователями, а это означает, что ваше решение будет основываться на устаревшей информации. Во-вторых, загрузка всех этих записей одновременно означает, что вы сильно нагружаете сеть: В-третьих, пользователю, скорее всего, надоест ждать, пока записи загрузятся, и он начнет проявлять недовольство по поводу медленной работы сети. Но есть и два преимущества. Во-первых, как только записи загрузятся, активность в сети со стороны рабочей станции будет достаточно мала — сеть освобождается для других запросов, и в общем случае пропускная способность сети улучшится. Во-вторых, так как все запрашиваемые записи находятся теперь на машине пользователя, общая производительность приложения для него также повысится.

·        Dynaset (Динамический набор) — динамическая копия данных, которые содержатся в одной или нескольких таблицах базы данных. В отличие от моментального снимка, любые внесенные в набор изменения сразу же становятся доступны всем остальным пользователям базы данных. При выборе этого переключателя Visual C++ создает отдельный указатель для каждой запрашиваемой записи. Кроме того, с сервера загружаются только те записи, которые действительно нужны для заполнения формы. Преимущества такого подхода очевидны — записи на экране появляются практически немедленно. Помимо этого, вы также будете в курсе тех изменений, которые другиепользователи осуществляют в базе данных. И, наконец, другие пользователи будут знать об изменениях, которые делаете вы, так как если записи изменились, то они сразу же загружаются на сервер. Совершенно очевидно, что этот подход требует практически постоянного доступа к серверу, что будет снижать общую пропускную способность сети, а также производительность приложения. Этот переключатель следует выбирать для создания приложений, где пользователь больше всего времени будет тратить на корректировку данных. Это также наилучший выбор для больших баз данных, потому что будет загружаться только та информация, которая действительно нужна пользователю.

·         Table (Таблица). Предыдущие две опции работают на уровне записей, при использовании же табличного подхода (доступен только для модели DАО и нами использоваться не будет) результат выполнения запроса помещается во временную таблицу. Это не только сокращает объем информации, загружаемой с сервера, но и означает, что вы, как программист, сразу можете непосредственно манипулировать полями и записями временной таблицы. Каковы затраты при таком режиме работы? Если невнимательно подойти к формированию запроса, то процесс загрузки с сервера может оказаться более длительным, чем при использовании набора записей. Кроме того, можно не увидеть никаких изменений, сделанных другими пользователями, а они не смогут увидеть изменения, сделанные вами.

Для нашего примера установите переключатель Snapshot и нажмите кнопку ОК. После регистрации соединения с базой данных вы увидите блок диалога Select Database Tables. Выберите таблицы базы данных, где необходимо выделить те таблицы или запросы (queries), которые требуется включить в набор записей. В нашем простейшем случае это пока одна таблица, например — jobs.


После нажатия на кнопку ОК вы вернетесь к диалоговому окну MFC AppWizard — Step 2 of 6, где, правда, изменилась надпись под кнопкой Data Source..., которая теперь сообщает о выбранных таблицах. На данном этапе конфигурирование приложения для использования базы данных pubs завершается. Три следующие окна мастера для нас неинтересны, поэтому просто четыре раза нажмите кнопку Next. В результате на экране появится диалоговое окно MFC AppWizard — Step 6 of 6, аналогичное показанному на рис. 5. В отображенном списке выделите элемент CDBView, чтобы обратить внимание на его базовый класс — CRecordView, с которым мы подробно познакомимся чуть ниже. Нажмите кнопку Finish, и Visual C++ отобразит диалоговое окно New Project Information.



Рис. 5 Диалоговое окно MFC AppWizard — Step 6 of 6


Рис. 6 Приложение, созданное мастером AppWizard, не предоставляет      пользователюникакой информации о содержимом базы данных

 

2.    Извлечение информации из базы данных.

Подготовка формы для отображения данных.

В нашем  примере мы должны научиться манипулировать данными одной единственной таблицы — jobs БД pubs. Используемые  нами столбцы этой таблицы перечислены в таблице 1.

Таблица 1. Используемые столбцы таблицы jobs.



Нужно создать форму для отображения информации о должностях (см. Рис. 7).


Рис. 7

 

 

 

 

Примечание:

Если вы хотите,  использовать русские названия для полей (столбцов) таблицы, то перед тем, как набирать эти названия, необходимо изменить основной язык для окна диалога.  Щелкните правой кнопкой мыши на идентификаторе окна диалога IDD_PRIM_FORM (на рис. 1 он обведен рамкой) и в появившемся контекстном меню выберите команду Properties (Свойства), в результате чего на экране появится диалоговое окно Dialog Properties (Свойства диалога) (рис. 8). В комбинированном списке Language (Язык) выберите Russian. – в двух местах Dialog


Рис. 8



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


Придадим окну формы более привлекательный вид. Необходимо немного модифицировать функцию: CMainFrame::PreCreateWindow

 

ClassView→CMainFraim→PreCreateWindow(CREATESTRUCT& cs).



Вот как она должна выглядеть:


BOOL CMainFrame::PreCreateWindowfCREATESTRUCTS cs) 

{

// Изменяем размеры главного окна

cs.cx = 376;

cs.cy = 272;

return CFrameWnd::PreCreateWindow(cs); 

}

 Примечание: 

Ваши значения могут отличаться от приведенных здесь значений (поскольку они зависят от размеров окна диалога). (В данном случае они равны 242x106, и в качестве шрифта установлен MS Sans Serif, 8.). Подберите значения, улучшающие вид вашей формы. В результате этих минимальных добавлений внешний вид окна формы  улучшился.

Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.