§ 19. Компоненты для работы с базами данных
Сайт: | Профильное обучение |
Курс: | Информатика. 11 класс (Повышенный уровень) |
Книга: | § 19. Компоненты для работы с базами данных |
Напечатано:: | Гость |
Дата: | Пятница, 3 Май 2024, 11:46 |
19.1. Технология ADO
Системы управления базами данных (СУБД) — это программные средства, предназначенные для создания, наполнения, обновления и удаления баз данных. По реализации СУБД можно выделить три основных вида (пример 19.1). Заказные СУБД требуют существенных затрат при разработке, однако заказные СУБД в максимальной степени учитывают специфику работы заказчика (того или иного предприятия), их интерфейс обычно интуитивно понятен пользователям и не требует от них специальных знаний. Среда программирования C++Builder обладает мощными средствами для разработки СУБД (пример 19.2). Мы будем рассматривать работу с БД, основанную на технологии ADO. И хотя скорость доступа к данным, обеспечиваемая технологией ADO, ниже, чем при использовании других технологий, она не требует установки дополнительных программных средств. Технология ADO (ActiveX Data Object) обеспечивает механизм доступа к данным, разработанный корпорацией Microsoft, посредством которого можно связываться с различными данными приложений Microsoft. Позволяет представлять данные из разнообразных источников (реляционных баз данных, текстовых файлов и т. д.) в объектно-ориентированном виде. В соответствии с терминологией ADO любой источник данных является хранилищем данных. Приложение взаимодействует с хранилищем данных с помощью интерфейса OLE. Для каждого типа хранилища данных используется свой интефейс ADO. Интерфейс обеспечивает обращение к данным хранилища с запросами, интерпретацию возвращаемой служебной информации и результатов выполнения запросов для передачи их приложению (пример 19.3). Применяя техногию ADO, можно в качестве хранилища данных использовать базы данных, созданные в MS Access (пример 19.4). Файл БД должен иметь формат MBD. |
Пример 19.1. Классификация СУБД: Пример 19.2. Технологии работы с БД, поддерживаемые в С++Builder: Пример 19.3. Механизм технологии ADO: Пример 19.4. Преимущества БД MS Access: 1) Все таблицы БД хранятся в одном файле, что облегчает создание резервных копий, переносимость на другие компьютеры. 2) Поля в таблице можно называть по-русски. |
19.2. Компоненты для работы с базой данных
Компоненты для работы находятся на панели dbGo (пример 19.5).
Для визуализации данных используются компоненты панели Data Controls (пример 19.6). Для обеспечения связи между визуальными компонентами и компонентами, обеспечивающими технологию ADO, используют компонент DataSource, расположенный на вкладке Data Access (пример 19.7). Таким образом, для работы с базами данных по технологии ADO на форме необходимо размещать компоненты (пример 19.8):
Пример 19.9. Создать проект, который позволит просматривать таблицу базы данных. Этапы выполнения задания
Одна из самых рапространенных операций, которая выполняется с таблицей БД — это построение запросов на поиск записей, удовлетворяющих условию. Для этого можно просмотреть все записи и проверить значения в соответствующих полях. Для посмотра записей таблицы используют методы компонента ADOTable: First, Last, Prior, Next, которые перемещают указатель текущей записи на первую, последнюю, следующую и предыдущую записи соответственно. Для доступа к значениям полей используется свойство Filds, которое хранит массив значений полей. Обращение к каждому конктретному полю происходит по индексу. Просмотр записей может осуществляться в цикле while с условием, пока не будет достигнут конец файла, или в цикле for по количеству записей в таблице. Пример 19.13. Добавить в проект из примера 19.9 поиск по условию:
Этапы выполнения задания
Для компонента ADOTable определены методы Insert, Edit, Delete, Append, которые переводят таблицу в режимы вставки, редактирования, удаления, добавления записи соответственно. Эти же методы визуализированы в виде кнопок компонента DBNavigator. Метод Post осуществляет физическое сохранение измененных данных. При использовании компонента DBNavigator метод срабатывает авоматически. Метод FieldByName предоставляет возможность обращения к данным в полях по имени поля. Метод Refresh позволяет обновить отредактированную таблицу на форме. |
Пример 19.5. Компоненты для работы с таблицами БД по технологии ADO: Компонент ADOconnection может использоваться как посредник между данными и другими компонентами ADO. Возможен другой вариант организации связей. Для установления соединения с источником данных напрямую компоненты ADO имеют свойство ConnectionString, с помощью которого могут создавать свой собственный канал доступа к данным. Пример 19.6. Компоненты для визуализации данных в таблицах БД: Пример 19.7. Компонент для установки связи: Пример 19.8. Реализация технологии ADO в C++Builder: Пример 19.9. Форма на этапе проектирования: Пример 19.10. Настройки ADOConnection: Имя файла лучше указывать без пути к БД. Пример 19.11. Настройка полей таблицы: Пример 19.12. Обработчик события OnClick для кнопки.
Работающее приложение: Кнопки навигатора позволяют добавлять и удалять строки в таблице. При этом изменения автоматически записываются в файл БД. Пример 19.13. Форма на этапе проектирования: Обработчики событий:
Работающее приложение: |
19.3. Построение запросов на языке SQL
При реализации проектов по обработке БД на форме появляется большое количество невизуальных компонентов. Для того, чтобы они не загромождали форму, можно использовать модуль DataModule (пример 19.14). После этого добавляется невизуальный модуль Unit2, на котором можно размещать невизуальные компоненты (пример 19.15). Для того, чтобы компоненты были доступны модулю Unit1, необходимо его подключить: #include "Unit2.h" Аналогично нужно подключить модуль Unit1 в модуле Unit2. Базы данных при выполнении запросов используют язык SQL. Компонент, который позволяет использовать запросы на языке SQL — ADOQuery. Работа компонента и настройка аналогичны компоненту ADOTable. Для отображения всей таблицы в свойстве SQL компонента должен быть прописан запрос: Select * From <имя таблицы БД> Для выполнения запроса используется метод ExecSQL. Пример 19.16. Создать проект, в котором необходимо реализовать возможность выполнения SQL запросов к базе данных Country.mdb. Этапы выполнения задания
|
Пример 19.14. Добавление модуля DataModule.
Пример 19.15. Размещение невизуальных компонентов: Пример 19.16. Форма на этапе конструирования: Пример 19.17. Редактирование запроса для свойства SQL компонента : Пример 19.18. Обработчик события OnClick для кнопки.
Работающее приложение: |
Вопросы к параграфу
1. Какие технологии применяются при создании СУБД средствами системы программирования C++Builder? 2. Какие компоненты используются для реализации технологии ADO? 3. Как устанавливается связь между компонентами ADO и визуальными компонентами на форме? 4. Какие методы позволяют просматривать записи таблицы? 5. Как можно обращаться к полям в таблице? 6. Какой компонент позволяет использовать запросы SQL? 7. Для чего предназначен модуль DataModule? |
Упражнения
Для проекта из примера 19.13 добавьте следующие возможности:
- Добавить новую вкладу для компонента PageControl, которую следует назвать Форма.
- Разместить на вкладке «Форма» следующие компоненты:
Компонент поле DBEdit расположен на вкладке DataControls. Для таких компонентов можно установить связи с полями базы данных, изменив их свойства в инспекторе объектов:
3*. Добавить возможность смены шрифта и цвета для компонентов, расположенных на форме.
2. Реализуйте возможность добавления записей в таблицу с использованием дополнительной формы (для проекта примера 19.13).
- Разместите на вкладке «Таблица» кнопку «Добавить запись». Сделайте ее невидимой.
- Создайте новую форму в проекте: File-> New-> VCL Form — C++Builder.
- Сохраните форму в папку с проектом.
- Добавьте строку #include "Unit2.h" в файл Unit1.h. (возможность доступа ко второй форме из первой).
- Добавьте строку #include "Unit1.h" в файл Unit2.h. (возможность обращаться к компонентам первой формы из второй).
- Разместите на Form2:
• 5 компонентов LabeledEdit (название расположить слева: свойство LabelPosition=lpLeft),
компонент Button («ОК»).
Кнопка «Добавить запись» становится видимой после отображения таблицы. - Для кнопки «Добавить запись» написать в обработчике команду:
Form2->Show();
В обработчике кнопки «ОК» на Form2 прописать следующие команды:
Form1->ADOTable1->Active = true;
Form1->ADOTable1->Fields->Fields[0]->ReadOnly = false;
Form1->ADOTable1->Fields->Fields[1]->ReadOnly = false;
Form1->ADOTable1->Fields->Fields[2]->ReadOnly = false;
…
Form1->ADOTable1->Insert();
Form1->ADOTable1->Fields->Fields[0]->Value = Form1->ADOTable1->RecordCount + 1;
Form1->ADOTable1->Fields->Fields[1]->Value = Form2->LabeledEdit1->Text;
…
Form1->ADOTable1->UpdateBatch();//применение обновлений
Form1->ADOTable1->Refresh(); - *Добавьте команды проверки корректности добавляемых данных:
1. Фамилия должна записываться маленькими буквами, а начинаться с большой буквы.
2. После фамилии должен быть один пробел.
3. Инициалы записываются без пробела, большими буквами с точкой после них.
4. Дата рождения имеет формат: 2 цифры, точка, 2 цифры, точка, четыре цифры. Проверить корректность даты (месяц от 1 до 12, день от 1 до (28, 29, 30,31), год от 1900 до 2000).
5. Пол содержит одну букву: «м» или «ж».
6. Год присвоения звания — число из промежутка [1900..20..]. *Правую границу промежутка года можно получать из текущей даты.
7. При несоблюдении формата выдавать соответствующее сообщение.
3. Для проекта из примера 19.16 добавьте следующие возможности:
- Добавьте кнопки «Сохранить Запрос» и «Загрузить Запрос» (используя диалоги работы с файлами).
- Создайте и сохраните 3 запроса:
1. С полями Название и Денежная единица, отображающий страны, у которых денежная единица евро.
2. С полями Название и Язык, отображающий страны, у которых название языка начинается с букв 'а' или 'н'.
3. Реализуйте свой запрос (составной, одно из полей должно быть числовым). - Добавьте кнопку «Запрос 2» и текстовое поле. Реализуйте запрос для поиска стран, первые буквы названий которых введены в текстовое поле.
- Добавьте кнопку «Запрос 3», выпадающий список и текстовое поле. В выпадающем списке поместите знаки «>, <, =». Реализуйте запрос для поиска стран, площадь которых — значения (>, <, =), введенного в текстовое поле.
- Добавьте кнопку «Запрос 4», и два списка. В первый список поместите названия полей, во второй — слова «возрастание», «убывание». Реализуйте запрос, который сортирует таблицу согласно выбранным критериям.