7 Работа с базами данных.ppt
- Количество слайдов: 72
Работа с базами данных
База данных (БД) – информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов с одинаковым набором свойств или именованную совокупность структурированных данных. Программное обеспечение, предназначенное для организации и ведения БД, – системы управления базами данных (СУБД). На физическом уровне электронная БД представляет собой файл или набор файлов.
По архитектуре организации хранения данных различают ¨ локальные СУБД (все части СУБД размещаются на одном компьютере); ¨ распределенные СУБД (части СУБД могут размещаться на нескольких компьютерах).
По способу доступа к БД выделяют следующие типы СУБД. n Файл-серверные. Файлы БД расположены на одном компьютере – файл-сервере. Доступ к данным осуществляется через локальную сеть. Для обеспечения разделения доступа к данным между несколькими пользователями (программами, работающими на одном или нескольких компьютерах) применяется блокировка файлов: пока данные используются одним пользователем, другой пользователь не может работать с этими данными (данные для него заблокированы).
Примеры файл-серверных СУБД: d. BASE, ¨ MS Access, ¨ Paradox. ¨
n Клиент-серверные. Файлы БД находятся на удаленном компьютере (сервере). Клиент-серверная СУБД состоит из двух частей: ¨ клиентской (работает на компьютере пользователя и обеспечивает взаимодействие с серверной программой: посредством запросов, передаваемых на удаленный компьютер, предоставляет доступ к данным); ¨ серверной (работает на удаленном компьютере: принимает запросы, выполняет их и пересылает данные клиентской программе).
Запросы – команды, написанные на языке SQL (Structured Query Language – язык структурированных запросов). Для обеспечения разделения доступа к данным используется механизм транзакций. Транзакция – это последовательность команд SQL, которая должна быть либо полностью завершена, либо полностью отменена.
Примеры клиент-серверных СУБД: ¨ ¨ ¨ Interbase, Oracle, Sysbase, MS SQL Server, IBM DB 2.
По модели представления данных БД классифицируются на: ¨ картотеки; ¨ иерархические; ¨ сетевые; ¨ реляционные; ¨ многомерные; ¨ объектно-ориентированные; ¨ документоориентированные. В настоящее время наиболее распространенными являются реляционные БД.
В состав Delphi входят компоненты, позволяющие создавать программы для работы с файлами данных, созданными различными СУБД (как файлсерверными, так и клиент-серверными). Кроме того, утилита Borland Database Desktop позволяет программисту создавать файлы БД в различных форматах.
Мощность и гибкость Delphi при работе с базами данных основана на использовании низкоуровневого ядра – процессора баз данных Borland Database Engine (BDE). Ядро баз данных BDE предназначено для работы с реляционными базами данных.
Использование псевдонимов БД
Во время разработки программы для работы с БД может быть заранее неизвестно, где именно (на каком диске, в каком каталоге (папке) и т. п. ) будут храниться файлы данных. Возникает проблема передачи в программу информации о месте расположения файлов БД. В Delphi эта проблема решается путем использования псевдонима БД.
Некоторые СУБД (например, Paradox) сохраняют БД в виде нескольких файлов (каждая таблица – отдельный файл). Любой каталог, содержащий файлы в формате Paradox (db-файлы), рассматривается Delphi как единая база данных. Другие СУБД сохраняют БД в одном файле (например, Inter. Base сохраняет все таблицы в файле с расширением. gdb). Этот файл и есть БД. Псевдоним (Alias) – это короткое имя, поставленное в соответствие реальному, полному имени файла (каталога) БД.
Создание псевдонима Утилита BDE Administrator позволяет ¨ создать псевдоним; ¨ изменить файл (каталог), связанный с псевдонимом. Запуск: меню Пуск | Все программы | Borland Delphi 7 | BDE Administrator
Создание нового псевдонима: меню Object | New. В открывшемся окне New Database Alias – выбрать драйвер для доступа к БД. По умолчанию предлагается драйвер STANDARD, который обеспечивает доступ к таблицам в формате Paradox.
Добавлен новый элемент Ввести имя псевдонима (контекстное меню, Rename) Указать путь к файлам БД
n Пример. Для БД «Крепости России» создан псевдоним Kremlins. Путь к файлу данных указан в строке PATH. Зарегистрировать созданный псевдоним в файле конфигурации idapi. cfg – команда меню Object | Apply.
Если вместо драйвера STANDARD был выбран драйвер для доступа к другой СУБД, то кроме расположения файлов БД, нужно будет ввести дополнительную информацию (зависит от выбранной СУБД). Например, Inter. Base требует задания параметров: Языковой драйвер для доступа к БД Имя сервера БД и полный путь доступа к БД Имя пользователя при связи с БД по этому псевдониму
Создание таблиц с помощью Database Desktop
Утилита Database Desktop, входящая в состав Delphi, предназначена для интерактивной работы с таблицами БД различных форматов. Обеспечивает создание, просмотр и модификацию таблиц БД, а также выборку информации с помощью запросов. Запуск утилиты из Delphi: команда меню Tools | Database Desktop.
Создание таблицы:
Пометить поле как ключевое (двойной щелчок мышью) Ввести имя поля (последовательность букв латинского алфавита и цифр не более 25 символов) Выбрать тип данных (список раскрывается после щелчка правой кнопкой мыши) Пометить поле как обязательное для заполнения Границы диапазона значений поля Задать значение по умолчанию Задать шаблон для контроля правильности вводимой информации
Типы данных и соответствующие им константы Тип Содержимое поля Константа Alpha A Строка символов (до 25 символов). Number N Число из диапазона 10 -307 – 10308 с 15 значащими цифрами. Money $ Число в денежном формате. Short S Целое число в диапазоне -32768 – 32767. Long Integer I Целое число в диапазоне -2147483648 – 2147483647. Date D Дата. Time T Время от полуночи в миллисекундах. Timestamp @ Время и дата. Memo M Строка символов произвольной длины. Formatted Memo F Строка символов произвольной длины. Можно указать тип и размер шрифта, оформление и цвет символов. Graphic G Графика. Logical L Логическое значение. + Целое число с автоприращением. Bytes Y Двоичные данные. Binary B Двоичные данные (не находятся в файле таблицы). Autoincrement
Шаблон для контроля правильности вводимой информации Шаблон представляет собой последовательность обычных и специальных символов. Специальные символы перечислены в таблице. Символ шаблона Допустимый при вводе символ # Любая цифра. ? Любая буква (прописная или строчная). & Любая буква (преобразуется в прописную). ~ Любая буква (преобразуется в строчную). @ Любой символ. ! Любой символ ( буква преобразуется в прописную). ; Следующий за ; символ интерпретируется как обычный. * Любое количество повторяющихся символов, определяемых следующим за *.
Необязательные элементы данных поля при задании шаблона заключаются в квадратные скобки. 1. Примеры: Шаблон [(###)]###-##-## позволяет вводить в поле семизначный номер телефона как с заключенным в скобки кодом города, так и без него. 2. Если в поле «Город» задан шаблон [Смоленск, Тобольск, Псков, Нижний Новгород], то при вводе данных в поле после ввода одной из букв «С» , «Т» , «П» или «Н» будет появляться название города.
После определения структуры таблицы – сохранить (Save As). Выбор режима просмотра или редактирования таблицы Указать псевдоним! Если установлен флажок то
Ввод данных в поле с клавиатуры – обычным образом. Для перехода к следующему полю – <Enter>. Для редактирования уже заполненного поля – установить курсор в поле, нажать <F 2> и внести изменения. Если при вводе данных буквы русского алфавита отображаются неверно, то нужно изменить шрифт: меню Edit | Preferences, кнопка Change. Нужно выбрать русифицированный шрифт True. Type (а не Open. Type) или шрифт @Arial Unicode MS.
n Пример. Создание таблицы БД «Крепости России» . При работе с таблицей в среде Database Desktop значения полей типа Memo, Binary и OLE не отображаются Автоматическая сортировка по ключевому полю
Разработка приложения
Методика разработки приложения работы с БД не отличается от методики создания обычной программы: ¨ размещение на форме компонентов, ¨ установка значений свойств компонентов, ¨ разработка процедур обработки событий. Приложение работы с БД должно содержать компоненты, обеспечивающие ¨ доступ к данным, ¨ возможность просмотра и редактирования полей.
Доступ к базе данных (таблице) Доступ к БД обеспечивают компоненты: Data. Source (вкладка Data Access палитры компонентов), Database, Table, Query (вкладка BDE). Компонент Data. Source Компонент Table Компонент Query Компонент Database
Компонент Data. Source (источник данных) обеспечивает связь между компонентом отображения/редактирования данных (например, DBGrid) и источником данных: таблицей (компонент Table) или результатом выполнения SQL-запроса к таблице (компонент Query). Table Компонент отображения данных БД Data. Source Query
Основные свойства компонента Table (перечислены в том порядке, в котором следует устанавливать их значения после добавления компонента на форму): Свойство Определяет Имя компонента. Используется для доступа к свойствам компонента. Имя БД, частью которой является таблица, для Database. Name доступа к которой используется компонент. Значение свойства – псевдоним БД. Имя файла данных (таблицы) для доступа к Table. Name которому используется компонент. Name Table. Type Тип таблицы (tt. Paradox, tt. DBase, tt. Fox. Pro, tt. ASCII – форматированный текстовый файл). Active Признак активизации файла данных (таблицы). При установке значения True – открытие таблицы.
Основные свойства компонента Datasource (перечислены в том порядке, в котором следует устанавливать их значения после добавления компонента на форму): Свойство Name Data. Set Определяет Имя компонента. Используется для доступа к свойствам компонента. Имя компонента, представляющего собой входные данные (Table, Query и др. ).
Просмотр базы данных Пользователь может просматривать БД ¨ в режиме формы (можно видеть только одну запись); ¨ в режиме таблицы (можно видеть несколько записей одновременно). Можно комбинировать эти режимы: краткую информацию выводить в табличной форме, а при необходимости видеть содержимое всех полей – переключаться на режим формы.
Компоненты, обеспечивающие просмотр и редактирование содержимого полей БД, находятся на вкладке Data Controls палитры компонентов. Компонент DBGrid Компонент DBNavigator Компонент DBEdit Компонент DBText Кроме выделенных, компоненты DBMemo, DBImage, DBList. Box, DBCombo. Box, DBCheck. Box, DBRadio. Group и др.
Режим формы Для просмотра/редактирования данных в режиме формы необходимо для каждого поля добавить компонент, обеспечивающий просмотр/редактирование. Компонент DBText позволяет только просматривать содержимое поля, а компоненты DBEdit и DBMemo – просматривать и редактировать. Основные свойства этих компонентов: Свойство Name Определяет Имя компонента. Используется для доступа к свойствам компонента. Data. Source Компонент-источник данных. Data. Field Поле таблицы, для отображения которого используется компонент.
Компонент DBNavigator представляет собой набор кнопок, с помощью которых во время работы программы можно перемещаться от текущей записи к предыдущей, следующей, к первой (последней) записи в таблице, а также добавить новую запись или удалить текущую. Обновить Редактировать Отменить Сохранить Изменяя значения свойства Visible. Buttons для каждой кнопки, можно сделать эту кнопку доступной или недоступной и, тем самым, разрешить или запретить выполнение некоторых операций.
n Пример. Рассмотрим приложение, которое обеспечивает просмотр и редактирование БД «Крепости России» . Форма приложения: Image 1 Table 1 Data. Source 1 DBNavigator 1
Сначала на форме нужно разместить компоненты Table и Data. Source. Значения свойств этих компонентов в порядке, в котором их следует устанавливать: Свойство Значение Комментарий Table 1. Database. Name Kremlins Псевдоним БД Table 1. Table. Name kremlins. db Таблица БД (файл данных) Table 1. Active True Data. Source 1. Data. Set Table 1
После настройки компонентов Table и Data. Source на форму можно добавлять и настраивать компоненты DBEdit, DBMemo и др. Свойства компонентов DBEdit, DBMemo и DBNavigator: Свойство Значение DBEdit 1. Data. Source, DBEdit 2. Data. Source, DBEdit 3. Data. Source, DBMemo 1. Data. Source, Data. Source 1 DBNavigator. Data. Source DBEdit 1. Data. Field Name DBEdit 2. Data. Field Data DBEdit 3. Data. Field Photo DBMemo 1. Data. Field Note DBMemo 1. Scroll. Bars ss. Vertical
Если свойство Active компонента Table 1 имеет значение True, то сразу после установки значения свойству Data. Field в поле компонента DBEdit появится содержимое соответствующего поля первой записи таблицы БД.
После запуска программы можно ввести данные в поле Memo (с клавиатуры или скопировать из буфера обмена):
Усовершенствуем программу таким образом, чтобы во время ее работы в поле Image выводилось изображение крепости, информация о которой отображена на форме (имя файла, в котором хранится фотография, содержится в поле Photo). Вывод изображения реализуется с помощью следующих процедур.
procedure TForm 1. Table 1 After. Scroll(Data. Set: TData. Set); begin Переход к другой if DBEdit 3. Text <> '' then записи таблицы begin Image 1. Picture. Load. From. File(Form 1. DBEdit 3. Text); Image 1. Visible: =True end Вывод иллюстрации из else Image 1. Visible: =False; файла в поле Image 1 end; procedure TForm 1. DBEdit 3 Key. Press(Sender: TObject; var Key: Char); begin Нажатие клавиши if Key = #13 then в поле DBEdit 3 if DBEdit 3. Text <> '' then Нажата begin клавиша Image 1. Picture. Load. From. File(Form 1. DBEdit 3. Text); <Enter> Image 1. Visible: =True end else Image 1. Visible: =False; end;
Окно программы во время ее работы:
Режим таблицы Если пользователю нужно одновременно видеть несколько записей БД, то просмотр БД удобнее выполнять в режиме таблицы. Просмотр и редактирование данных в режиме таблицы можно выполнять с помощью компонента DBGrid. Свойства компонента определяют вид таблицы и действия, которые могут быть выполнены над данными во время работы программы.
Свойства компонента DBGrid Свойство Определяет Name Имя компонента. Используется для доступа к свойствам компонента. Data. Source Источник отображаемых в таблице данных. Columns Options. dg. Titles Отображаемую в таблице информацию. Разрешает вывод заголовков столбцов. Разрешает вывод колонки индикатора (в колонке индикатора текущая запись помечается Options. dg. Indicator треугольником, новая запись – звездочкой, редактируемая – специальным значком). Разрешает менять во время работы программы Options. dg. Column. Resize ширину колонок таблицы. Разрешает выводить линии, разделяющие колонки Options. dg. Col. Lines таблицы. Разрешает выводить линии, разделяющие строки Options. dg. Row. Lines таблицы.
Установка значения свойства Columns: Добавление колонки Удаление колонки Щелчок мышью Свойство Columns – массив компонентов типа TColumn. Каждой колонке соответствует один элемент массива.
Свойства компонента Columns Свойство Определяет Field. Name Имя поля, содержимое которого выводится в колонке. Width Ширину колонки в пикселах. Font Шрифт, используемый для вывода текста в колонках. Color Цвет фона в колонке. Alignment Способ выравнивания текста в ячейках колонки. Title. Alignment Заголовок колонки. Значение по умолчанию – имя поля записи. Способ выравнивания заголовка колонки. Title. Color Цвет фона заголовка колонки. Title. Font Шрифт, используемый для вывода текста заголовка колонки. Title. Caption
Установка значений свойств компонента Columns: Выделенный в окне Editing DBGrid. Columns элемент В простейшем случае достаточно установить значения свойств Field. Name и Title. Caption.
n Пример. Рассмотрим приложение для работы с БД «Крепости России» , которое позволяет просматривать и редактировать данные в режиме таблицы. Отдельно (в поле DBMemo) выводится только историческая справка (содержимое полей типа Memo не отображается в ячейках компонента DBGrid). Вид формы: Свойству Table 1. Active установлено значение True, поэтому содержимое таблицы отображается на форме DBGrid DBMemo
Значения свойств Columns компонента DBGrid 1: Компонент Field. Name Title. Caption DBGrid 1. Columns[0] Name Название DBGrid 1. Columns[1] Data Время основания DBGrid 1. Columns[2] Photo Файл иллюстрации
Во время работы программы можно просматривать и редактировать информацию. Для перехода от одной записи к другой – компонент DBNavigator или клавиши управления курсором. Для редактирования текущей записи – соответствующая кнопка компонента DBNavigator или клавиша <F 2>. Для добавления новой или удаления текущей записи – соответствующие кнопки компонента DBNavigator или клавиши <Ins> и <Del>.
Окно программы во время ее работы в режиме добавления новой записи:
Выбор информации из базы данных При работе с БД чаще всего интересно не все ее содержимое, а конкретная информация. Поиск путем последовательного просмотра записей неэффективен. Большинство СУБД позволяют производить выбор информации из БД с помощью запросов. При составлении запроса пользователь указывает критерии выбора информации, а система выводит записи, удовлетворяющие этому критерию.
Для выборки из БД информации, соответствующей некоторому критерию, – компонент Query (вкладка BDE палитры компонентов). Query Компонент Query похож на компонент Table, но представляет не все записи таблицы, а только удовлетворяющие критерию запроса.
Некоторые свойства компонента Query: Свойство Определяет Name Имя компонента. Используется компонентом Data. Source для связи набора записей (результата выполнения запроса) и компонента, обеспечивающего просмотр записей. SQL Написанный на языке SQL запрос к БД. Active Установка значения True активизирует выполнение запроса. Запрос к БД может быть сформирован ¨ во время разработки формы; ¨ во время работы программы.
¨ Для формирования запроса во время разработки формы – окно String List Editor. Щелчок мышью ¨ Для формирования запроса во время работы программы – добавление строк к списку SQL (с использованием метода Add).
n Пример. Запрос к БД «Крепости России» на поиск информации о Тобольском кремле. Вид формы после установки свойству Active значения True.
Фрагмент кода программы, который формирует этот же запрос и окно программы во время ее работы: Закрытие файла результата with Form 1. Query 1 do выполнения предыдущего запроса begin Close; Удаление текста предыдущего запроса SQL. Clear; SQL. Add('SELECT * FROM "C: ProjectsKremlinskremlins. DB" '); SQL. Add('WHERE Name = "Тобольский кремль" '); Open end; Активизация выполнения запроса
n Пример. Усовершенствуем программу из предыдущего примера. Добавим на форму компонент Edit и обеспечим возможность вывода информации о сооружении, название которого введено пользователем. Вид формы: Group. Box 1
Исполняемая часть программы: procedure TForm 1. Button 1 Click(Sender: TObject); var nam : string[70]; begin nam : = Edit 1. Text; with Query 1 do begin Close; SQL. Clear; SQL. Add('SELECT * FROM "C: ProjectsKremlinskremlins. DB" '); SQL. Add('WHERE Name = " ' + nam + ' " '); Open end; Data. Source 1. Data. Set : = Query 1; end; procedure TForm 1. Form. Create(Sender: TObject); begin Edit 1. Text : = ''; end;
Окно программы после ввода пользователем названия сооружения и щелчка на кнопке «Вывести» .
Критерий выбора данных можно изменить во время работы программы. n Пример. Модифицируем программу из предыдущего примера следующим образом. Добавим на форму два компонента Radio. Button и обеспечим возможность вывода как всей записей БД, так и только тех данных, которые удовлетворяют заданному критерию.
Вид формы: Group. Box 2 Radio. Button 1 Radio. Button 2 Group. Box 1 Процедуры исполняемой части программы приведены далее.
procedure TForm 1. Button 1 Click(Sender: TObject); var nam : string[70]; begin nam : = Edit 1. Text; with Query 1 do begin Close; SQL. Clear; SQL. Add('SELECT * FROM "C: ProjectsKremlinskremlins. DB" '); SQL. Add('WHERE Name = " ' + nam + ' " '); Open end; Data. Source 1. Data. Set : = Query 1; end; procedure TForm 1. Form. Create(Sender: TObject); begin Edit 1. Text : = ''; end;
procedure TForm 1. Radio. Button 2 Click(Sender: TObject); begin Label 2. Enabled : = True; Edit 1. Enabled : = True; Button 1. Enabled : = True; end; procedure TForm 1. Radio. Button 1 Click(Sender: TObject); begin Label 2. Enabled : = False; Edit 1. Enabled : = False; Button 1. Enabled : = False; Data. Source 1. Data. Set : = Table 1; end;
Окно программы во время ее работы:
Перенос программы управления БД на другой компьютер При переносе обычной программы, как правило, достаточно скопировать только исполняемый файл (exe-файл). При переносе программы управления БД необходимо выполнить перенос BDE. Borland рекомендует создавать установочную программу, которая выполнит копирование всех необходимых файлов. Средство создания установочной программы – утилита Install. Shield Express (поставляется вместе с Delphi).
7 Работа с базами данных.ppt