- •230201 «Информационные системы и технологии»
- •Введение
- •1Необходимое материально-техническое обеспечение для проведения лабораторных работ
- •2Построение приложений для баз данных в среде Lazarus
- •2.1Схема взаимодействия приложения Lazarus с различными базами данных
- •2.2Компоненты вкладки sqLdb среды Lazarus
- •3Работа со средой ibExpert
- •3.1Особенности программы
- •3.2Операции над базой данных
- •3.2.1Создание базы данных
- •3.2.2Регистрация базы данных
- •3.2.3Соединение с базой данных и отсоединение от нее
- •3.2.4Удаление базы данных
- •3.3Операции с таблицами
- •3.3.1Создание таблицы и задание ее структуры
- •3.3.2Окно работы с созданной таблицей. Редактирование структуры таблицы
- •3.3.3Работа со связями между таблицами
- •3.3.4Работа с триггерами
- •3.3.5Работа с данными таблиц
- •3.4Qsl-редактор
- •4Создание приложения для доступа к базе данных Interbase или Firebird с помощью среды программирования Lazarus
- •4.1Работа с компонентами
- •4.1.1Связка компонентов для доступа к базе данных
- •4.1.2Настройка компонентов
- •4.1.3Общий принцип работы компонента tsqlQuery
- •4.1.4Общий принцип работы компонента tsqlTransaction
- •4.2Особенности приложения и базы данных
- •4.2.1Особенности размещения
- •4.2.2Особенности рассматриваемой базы данных
- •4.3Непосредственная работа с базой данных
- •4.3.1Формирование интерфейса с помощью данных из базы
- •4.3.2Вставка новых записей в таблицу с помощью приложения
- •4.3.3Удаление записей в базе данных с помощью приложения
- •4.3.4Редактирование данных в базе с помощью приложения
- •Приложение а (обязательное) Пример оформления титульного листа отчета по лабораторной работе
4.3.2Вставка новых записей в таблицу с помощью приложения
Рассмотрим обработчик события нажатия кнопки «Добавить запись» (см. рисунок 4.1). Из компонента TEdit считывается название поля t1_name и производится добавление в таблицу New_table1 новой записи с указанным значением t1_name (Первичный ключ устанавливается триггером).
Для начала компонент TSQLQuery устанавливается в пассивный режим для того, чтобы ему можно было давать команды.
SQLQuery1.Active:=false;
Свойство SQL очищается методом Clear класса TStrings, и туда вносится SQL-запрос на вставку методом Add класса TStrings. Запрос выполняется методом ExecSQL компонента TSQLQuery.
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('insert into new_table1 values (1, '''+Edit1.Text+''')');
SQLQuery1.ExecSQL;
После выполнения запроса необходимо сразу же сохранить изменения в базе данных методом Commit компонента TSQLTransaction.
SQLTransaction1.Commit;
Результат добавления записи виден после повторного вывода значений поля t1_name.
Рисунок 4.5 – Результат добавления новой записи
С помощью среды IBExpert можно подтвердить изменения в базе, выполнив в окне работы с таблицей команду Commit Transaction.
Рисунок 4.6 – Отображение изменений в базе посредством среды IBExpert
4.3.3Удаление записей в базе данных с помощью приложения
Усложним приложение, добавив в него функцию удаления. Форма примет следующий вид.
Рисунок 4.7 – Добавление функции удаления записей в приложение
Рассмотрим обработчик события нажатия на кнопку «Удалить запись». Выполнение запроса на удаление аналогично выполнению запроса на вставку. Удаляется та запись, значение которой совпадает с выделенным пунктом списка, то есть ListBox1.Items[ListBox1.ItemIndex]. Соответственно, происходит проверка, выделен ли элемент в списке вообще.
if ListBox1.ItemIndex<>-1 then
begin
SQLQuery1.Active:=false;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('delete from new_table1 where "t1_name"='''+ListBox1.Items[ListBox1.ItemIndex]+'''');
SQLQuery1.ExecSQL;
SQLTransaction1.Commit;
end;
4.3.4Редактирование данных в базе с помощью приложения
Усложним приложение, добавив в него функцию редактирования данных. Форма примет следующий вид:
Рисунок 4.8 - Добавление функции редактирования данных в приложение
Рассмотрим обработчик события нажатия на кнопку «Редактировать». Выполнение запроса на редактирование аналогично выполнению запроса на удаление. Редактируется значение поля t1_name, совпадающее с выделенным пунктом списка, то есть ListBox1.Items[ListBox1.ItemIndex]. Новое значение поля берется из строки ввода Edit2.
if ListBox1.ItemIndex<>-1 then
begin
SQLQuery1.Active:=false;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('update new_table1 set "t1_name"='''+Edit2.Text+''' where "t1_name" ='''+ ListBox1.Items[ListBox1.ItemIndex]+'''');
SQLQuery1.ExecSQL;
SQLTransaction1.Commit;
end;
5Формулировка задачи
5.1Задание на лабораторную работу
Разработать приложение для существующей базы данных, полностью автоматизирующее работу с ней. В приложении должны быть визуализированы связи «один-ко-многим». Реализовать интерфейс посредством динамического формирования SQL-запросов без использования компонентов панели Data Controls.
5.2Контрольные вопросы
Схема взаимодействия приложения Lazarus с различными базами данных.
Компоненты работы с базами данных.
Особенности работы в программе IBExpert.
Общий принцип работы компонента TSQLQuery.
Общий принцип работы компонента TSQLTransaction.
Общие особенности формирования интерфейса программы с помощью содержимого базы данных.
Список рекомендуемой литературы
1. База знаний по Lazarus. – [Электронный ресурс] // Lazarus. – [Режим доступа: http://wiki.freepascal.org/Main_Page/ru].
2. Алексеев, Е.Р. Free Pascal и Lazarus. Учебник по программированию [Текст] / Е.Р. Алексеев. – М.: ДМК – Пресс, 2010. – 438 с.
3. Архангельский, А.Я. Программирование в Delphi 7.[Текст] / А.Я. Ар-хангельский. - СПб.: БХВ, 2003.
4. Иванова, Г.С. Объектно-ориентированное программирование: Учеб. [Текст] / Г.С. Иванова, Т.Н. Ничушкина и др. - М.: Издательство МГТУ имени Н.Э. Баумана, 2001.
5. Малыхина, М.П. Базы данных: основы, проектирование, использование: [Текст] / М.П. Малыхина. - СПб.: BHV-Петербург (БХВ-Петербург), 2004. - 499 с.
6. Кузин, А. В. Базы данных: учеб. пособие для вузов [Текст] / А.В. Кузин; С.В. Левонисова. - М.: Академия (Academia), 2005. - 314 с.: ил.
