Файл: Практическая работа БД.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.05.2021

Просмотров: 847

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

практическая работа № 7

Работа с переменными и массивами

Работа с массивами

Компонент TStringGrid

Порядок выполнения задания

Настройка компонента TStringGrid

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

Nmax=10; // Максимальная размерность массива

Type

Mas1 = array[1..Nmax] of extended; {Объявление типа одномерного массива вещественных чисел размерностью Nmax}

Mas2 = array[1..Nmax,1..Nmax] of extended; {Объявление типа двумерного массива вещественных чисел размерностью Nmax*Nmax}

Var

Form1: TForm1;

A : Mas2; // Объявление двумерного массива

B,Y : Mas1; // Объявление одномерных массивов

N,i,j : integer;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);

{Процедура подготовки к началу работы}

begin

N:=3; // Задание размерности массива

Edit1.Text:=IntToStr(N); // Вывод значения N в Edit1

{Задание числа строк и столбцов в таблицах}

StringGrid1.ColCount:=N+1;

StringGrid1.RowCount:=N+1;

StringGrid2.RowCount:=N+1;

StringGrid3.RowCount:=N+1;

{Ввод в левую верхнюю ячейку таблицы названия массива}

StringGrid1.Cells[0,0]:='Массив A:';

StringGrid2.Cells[0,0]:='Массив B:';

StringGrid3.Cells[0,0]:='Массив Y:';

{Заполнение верхнего и левого столбцов поясняющими подписями}

for i:=1 to N do

begin

StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);

StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

{Процедура изменения размерности массива}

begin

try

N:=StrToInt(Edit1.Text);

except

ShowMessage('Ошибочная запись числа '+Edit1.Text);

Edit1.SetFocus;

Exit;

end;

{Задание числа строк и столбцов в таблицах}

StringGrid1.ColCount:=N+1;

StringGrid1.RowCount:=N+1;

StringGrid2.RowCount:=N+1;

StringGrid3.RowCount:=N+1;

{Заполнение верхнего и левого столбцов поясняющими подписями}

for i:=1 to N do

begin

StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);

StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);

end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

{Процедура расчета вектора Y}

var

s: extended;

begin

{Заполнение массива А элементами из таблицы StringGrid1}

for i:=1 to N do

for j:=1 to N do

begin

if StringGrid1.Cells[j,i]=' ' then

begin

ShowMessage('Ошибка заполнения массива А');

Exit;

end;

try

A[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);

except

ShowMessage('Ошибочная запись числа '+StringGrid1.Cells[j,i]);

Exit;

end;

end;

{Заполнение массива B элементами из таблицы StringGrid2}

for i:=1 to N do

begin

if StringGrid2.Cells[0,i]=' ' then

begin

ShowMessage('Ошибка заполнения массива В!');

Exit;

end;

try

B[i]:=StrToFloat (StringGrid2.Cells[0,i]);

except

ShowMessage ('Ошибочная запись числа '+StringGrid2.Cells[0,i]);

Exit;

end;

end;

{Умножение массива А на массив В}

for i:=1 to N do

begin

s:=0;

for j:=1 to N do

s:=s+A[i,j]*B[i];

Y[i]:=s;

{Вывод результата в таблицу StringGrid3}

StringGrid3.Cells[0,i]:=FloatToStrf(y[i],fffixed,6,2);

end;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

{Очищение всех ячеек таблиц перед очередным прогоном программы}

for i:=1 to N do

begin

StringGrid2.Cells[0,i]:=' ';

StringGrid3.Cells[0,i]:=' ';

for j:=1 to N do

StringGrid1.Cells[j,i]:=' ';

end;

end;

end.

Индивидуальные задания

лабораторная работа №

ЛАБОРАТОРНАЯ РАБОТА №

Создание приложений для работы с базами данных На ОСНОВЕ ТЕХНОЛОГИИ bde

Порядок выполнения задания

Рис. 9.- Расположение компонентов на форме

3.Компоненту DBNavigator1:

4.Компоненту DBGrid1:

Рис. 10.- Рабочее окно программы

Компонент DBNavigator служит для управления записями таблицы (перемещение, добавление, удаление). При этом все изменения сохраняются в таблице MainData.DB (свойству Store Defs присвойте значение True).

3.Компоненту DBGrid2:

Можно не менять свойство SQL компонента Query1, а изменить обработчик события для Form1 следующим образом:

end;

Создание параметризованного запроса

Индивидуальные задания

Варианты задач

Индивидуальные задания

Варианты задач

лабораторная работа №

Индивидуальные задания

Варианты задач

TQuery и параметры

Для упорядочивания данных используется понятие индекса. Индекс показывает, в какой последовательности желательно просматривать таблицу. Индексы представляют собой наиболее эффективное средство, которое позволяет значительно ускорить поиск данных в таблицах, по сравнению с таблицами, не содержащими индексов, за счет поиска и сортировки записей по одному (или нескольким в случае использования составного индекса) полю таблицы. Уникальные индексы могут использоваться в качестве первичных ключей. Индексы являются как бы посредниками между пользователем и таблицей.

Индексы могут быть первичными и вторичными.

Например, первичным индексом могут служить поля, отмеченные при создании базы данных как ключевые. А вторичные индексы могут создаваться из других полей как в процессе создания самой базы данных, так и позднее в процессе работы с ней. Вторичным индексам присваиваются имена – идентификаторы, по которым их можно использовать. База данных обычно содержит не одну, а множество таблиц. Например, база данных о некоторой организации может содержать таблицу Deps имеющихся в ней подразделений с характеристикой каждого из них (табл. 2).

В связанных таблицах обычно одна выступает как главная, а другая или несколько других - как вспомогательные, управляемые главной. Главная и вспомогательные таблицы связываются друг с другом ключом. В качестве ключа могут выступать какие-то поля, присутствующие в обеих таблицах.

Таблица 2

Таблица подразделений Deps с характеристикой каждого из них

Отдел

Тип

Dep

Proisv

Бухгалтерия

управление

Цех 1

производство

Цех 2

производство

Например, таблица Deps может быть главной, а вспомогательной- Pers. Связываться они могут по полю Dep, присутствующему в обеих таблицах.

Каждой записи в главной таблице Deps соответствуют те записи вспомогательной таблицы Pers, в которых ключевое поле Dep с названием отдела совпадает с названием отдела в текущей записи главной таблицы. Иначе говоря, если в текущей записи главной таблицы в поле Dep написано «Бухгалтерия», то во вспомогательной таблице Pers выделяются все записи сотрудников бухгалтерии.

Создают базы данных и обрабатывают запросы системы управления базами данных – СУБД: Paradox, Microsoft Access, FoxPro, Oracle, InterBase и т.д.

Разные СУБД по-разному организуют и хранят базы данных. Paradox использует для каждой таблицы один файл. В Microsoft Access и InterBase несколько таблиц хранятся как один файл. В этом случае база данных–это имя файла с путем доступа к нему. Системы типа клиент/сервер (Sybase, Microsoft SQL, Oracle) хранят все данные на отдельном компьютере и общаются с клиентом посредством специального языка – SQL.

Для упорядочения обращения к базам данных используют псевдонимы баз данных. Псевдоним (alias) содержит всю информацию, необходимую для обеспечения доступа к базе данных. Эта информация сообщается только один раз при создании псевдонима. Алиас сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации. Поэтому использование алиасов позволяет легко переходить от локальных баз данных к SQL-серверным базам (естественно, при выполнении требований разделения приложения на клиентскую и серверную части).




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

BDE (Borland Database Engine) – машина баз данных Borland. Представляет собой набор DLL-библиотек, обеспечивающих низкоуровневый доступ к локальным и клиент-серверным БД. Должна устанавливаться на каждом компьютере, который использует приложения для работы с БД, написанные для Delphi.

SQL Links–драйверы для работы с удаленными серверами данных (MS SQL Server, Oracle)

Database Desktop (DBD) – средство для создания, изменения и просмотра БД. Эта утилита, прежде всего, ориентирована на работу с таблицами локальных СУБД, например Paradox. Можно с некоторыми ограничениями создавать и просматривать таблицы баз данных, работающих под управлением серверов: InterBase, MS SQL Server, Oracle.

DBD дает программисту возможность сформировать запрос к БД методом QBE (Query By Example – запрос по образцу).

Создание и просмотр псевдонимов баз данных.

1. С помощью DBD (рис. 1).

Обычно вызов Database Desktop (DBD) включен в главное меню Delphi в раздел Tools. Если это не сделано можно включить его туда командой Tools|Configure Tools…(файл DBD32.exe).

DBD позволяет создавать таблицы баз данных некоторых СУБД, задавать и изменять их структуру.

В Delphi можно создавать и просматривать псевдонимы, выполнив команду Tools|Database Desktop|Tools|Alias Manager кнопка . При этом появляется окно Alias Manager (рис. 1.)


Рис. 1.-
Alias Manager

При выборе псевдонима в списке Database Alias автоматически изменяется тип драйвера в выпадающем списке

2.С помощью BDE Administrator (рис.2)

BDE Administrator(Пуск│Программы│Borland Delphi7│BDE Administrator)–утилита для установки псевдонимов (алиасов) баз данных, параметров БД и драйверов баз данных на конкретном компьютере. При работе с БД из приложения, созданного с помощью Delphi, доступ к базе данных производится по ее псевдониму. Параметры определяемой псевдонимом БД, действуют только для этой БД; параметры, установленные для драйвера БД, действуют для всех баз данных, использующих драйвер. Кроме того, можно произвести установку таких общих для всех БД параметров, как формат даты и времени, форматы представления числовых значений, используемый языковый драйвер и т.д.

После создания нового алиаса его имя появится в списке алиасов (рис.2). Однако просто создать алиас не достаточно. Нужно указать дополнительную информацию, содержание которой зависит от типа выбранной базы данных. Например, для баз данных Paradox и dBase (STANDARD), предназначенных для работы с локальными базами данных, требуется указать лишь путь доступа к данным:

TYPE

STANDARD

PATH

D:\User\РГОТУПС\Лабораторные_информатика\БД

SQL-сервер InterBase требует задания десяти параметров, многие из которых можно оставить установленными по умолчанию (кроме, обычно, параметров SERVER NAME и USER NAME).

Рис. 2.- BDE Administrator

3. С помощью Database Explorer (SQL Explorer)

Вызов этой программы производится из главного меню Delphi командой Пуск│Программы│Borland Delphi7│SQL Explore (рис.3).


SQL Explorer – универсальная утилита, совмещающая многие функции BDE Administrator и DBD. С ее помощью можно создавать и просматривать псевдонимы БД, просматривать структуры и содержимое таблиц БД, формировать запросы к БД на языке SQL, создавать словари данных (шаблоны полей таблиц).

SQL Monitor – средство для трассировки выполнения SQL-запросов.

Рис. 3.- Database Explorer (SQL Explorer).


Создание таблиц с помощью Database Desktop

Хотя для создания таблиц можно использовать различные средства (SQL-компонент TQuery и WISQL, компонент TTable), применение утилиты Database Desktop позволяет создавать таблицы в интерактивном режиме и сразу же просмотреть их содержимое - и все это для большого числа форматов. Это особенно удобно для локальных баз данных, в частности Paradox и dBase.

Database Desktop - это утилита, во многом похожая на Paradox, которая поставляется вместе с Delphi для интерактивной работы с таблицами различных форматов локальных баз данных - Paradox и dBase, а также SQL-серверных баз данных InterBase, Oracle, Informix, Sybase (с использованием SQL Links). Исполняемый файл утилиты называется DBD.EXE, расположен он, как правило, в директории, называемом DBD (при установке по умолчанию). Для запуска Database Desktop просто щелкните по ее иконке Пуск│Программы│Borland Delphi 7│ или выберите в главном меню Delphi в разделе Tools|Database Desktop.

После старта Database Desktop выберите команду меню File| New|Table для создания новой таблицы. Перед Вами появится диалоговое окно выбора типа таблицы, как показано на рис.7.4. Вы можете выбрать любой формат из предложенного, включая различные версии одного и того же формата.

Рис. 4. - Выпадающий список диалогового окна Table Type позволяет выбрать тип создаваемой таблицы

После выбора типа таблицы Database Desktop представит Вам диалоговое окно, специфичное для каждого формата, в котором Вы сможете определить поля таблицы и их тип, как показано на рис.5.

Рис. 5.-Database Desktop позволяет задать имена и типы полей в таблице

Имя поля в таблице формата Paradox представляет собой строку, написание которой подчиняется следующим правилам:

Имя должно быть не длиннее 25 символов.

Имя не должно начинаться с пробела, однако может содержать пробелы.

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

Имя не должно содержать квадратные, круглые или фигурные скобки [], () или {}, тире, а также комбинацию символов "тире" и "больше" (->).

Имя не должно быть только символом #, хотя этот символ может присутствовать в имени среди других символов. Хотя Paradox поддерживает точку (.) в названии поля, лучше ее избегать, поскольку точка зарезервирована в Delphi для других целей.

Имя поля в таблице формата dBase представляет собой строку, написание которой подчиняется правилам, отличным от Paradox:


Имя должно быть не длиннее 10 символов.

Пробелы в имени недопустимы.

Таким образом, Вы видите, что имена полей в формате dBase подчиняются гораздо более строгим правилам, нежели таковые в формате Paradox. Однако мы еще раз хотим подчеркнуть, что если перед вами когда-либо встанут вопросы совместимости, то лучше сразу закладывать эту совместимость - давать полям имена, подчиняющиеся более строгим правилам.

Укажем еще правила, которым подчиняется написание имен полей в формате InterBase.

Имя должно быть не длиннее 31 символа.

Имя должно начинаться с букв A-Z, a-z.

Имя поля может содержать буквы (A-Z, a-z), цифры, знак $ и символ подчеркивания (_).

Пробелы в имени недопустимы.

Для имен таблиц запрещается использовать зарезервированные слова InterBase.

Следующий (после выбора имени поля) шаг состоит в задании типа поля. Типы полей очень сильно различаются друг от друга, в зависимости от формата таблицы. Для получения списка типов полей перейдите к столбцу "Type", а затем нажмите пробел или щелкните правой кнопкой мышки. Приведем список типов полей, характерных для формата Paradox табл. 3.

Таблица 3.

Типы полей формата Paradox

Alpha

строка длиной 1-255 байт, содержащая любые печатаемые символы

Number

числовое поле длиной 8 байт, значение которого может быть положительным и отрицательным. Диапазон чисел - от 10-308 до 10+308 с 15 значащими цифрами

$ (Money)

числовое поле, значение которого может быть положительным и отрицательным. По умолчанию, является форматированным для отображения десятичной точки и денежного знака

Short

числовое поле длиной 2 байта, которое может содержать только целые числа в диапазоне от -32768 до 32767

Long Integer

числовое поле длиной 4 байта, которое может содержать целые числа в диапазоне от -2147483648 до 2147483648

# (BCD)

числовое поле, содержащее данные в формате BCD (Binary Coded Decimal). Скорость вычислений немного меньше, чем в других числовых форматах, однако точность - гораздо выше. Может иметь 0-32 цифр после десятичной точки

Date

поле даты длиной 4 байта, которое может содержать дату от 1 января 9999 г. до нашей эры - до 31 декабря 9999 г. нашей эры. Корректно обрабатывает високосные года и имеет встроенный механизм проверки правильности даты

Time

поле времени длиной 4 байта, содержит время в миллисекундах от полуночи и ограничено 24 часами

@ (Timestamp)

обобщенное поле даты длиной 8 байт - содержит и дату и время

Memo

поле для хранения символов, суммарная длина которых более 255 байт. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (1-240)-остальные символы сохраняются в отдельном файле с расширением .MB

Formatted Memo

поле, аналогичное Memo, с добавлением возможности задавать шрифт текста. Также может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240)-остальные символы сохраняются в отдельном файле с расширением .MB. Однако Delphi в стандартной поставке не обладает возможностью работать с полями типа Formatted Memo

Graphic

поле, содержащее графическую информацию. Может иметь любую длину. Смысл размера - такой же, как и в Formatted Memo. Database Desktop "умеет" создавать поля типа Graphic, однако наполнять их можно только в приложении

OLE

поле, содержащее OLE-данные (Object Linking and Embedding)-образы, звук, видео, документы-которые для своей обработки вызывают создавшее их приложение. Может иметь любую длину. Смысл размера-такой же, как и в Formatted Memo. Database Desktop "умеет" создавать поля типа OLE, однако наполнять их можно только в приложении. Delphi "напрямую" не умеет работать с OLE-полями, но это легко обходится путем использования потоков

Logical

поле длиной 1 байт, которое может содержать только два значения – T (true, истина) или F (false, ложь). Допускаются строчные и прописные буквы

+ (Autoincrement)

поле длиной 4 байта, содержащее нередактируемое (read-only) значение типа long integer. Значение этого поля автоматически увеличивается (начиная с 1) с шагом 1-это очень удобно для создания уникального идентификатора записи (физический номер записи не может служить ее идентификатором, поскольку в Парадоксе таковой отсутствует. В InterBase также отсутствуют физические номера записей, но отсутствует и поле Autoincrement. Его с успехом заменяет встроенная функция Gen_id, которую удобней всего применять в триггерах)

Binary

поле, содержащее любую двоичную информацию. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240)-остальные символы сохраняются в отдельном файле с расширением .MB. Это полнейший аналог поля BLOb в InterBase

Bytes

строка цифр длиной 1-255 байт, содержащая любые данные



Организация работы с базами данных в Delphi

Имеются несколько основных компонентов (объектов), которые Вы будете использовать постоянно для доступа к БД. Эти объекты могут быть разделены на три группы:

  • невизуальные: TTable, TQuery и др.;

  • визуальные: TDBGrid, TDBEdit, DBNavigator и др.;

  • связующие: TDataSource.

Первая группа включает невизуальные классы, которые используются для управления таблицами и запросами. С помощью невизуальных компонентов осуществляется подключение к базам данных, формирование запросов к ним, манипулирование таблицами. Эта группа сосредотачивается вокруг компонент типа TTable, TQuery. В Палитре Компонент эти объекты расположены на странице BDE

Вторая важная группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Визуальные компоненты служат основным инструментом разработки пользовательского интерфейса доступа к данным. Эта группа классов включает компоненты типа TDBGrid, TDBEdit, TDBImage, DBNavigator, TDBComboBox. В Палитре Компонент эти объекты расположены на странице Data Controls.

Имеется и третий тип, который используется для того, чтобы связать предыдущие два типа объектов. К третьему типу относится только невизуальный компонент TDataSource. В Палитре Компонент этот объект расположен на странице Data Access.

Ознакомьтесь с особенностями прикладных программных приложений, разработанных в среде Delphi, предназначенных для работы с БД (приложение П5).


Порядок выполнения задания

Задание: разработать простейший электронный ежедневник, содержащий следующую информацию:

дата, начальное и конечное время, комментарии, контактный телефон.

Реализовать простой и параметризованный запросы на основе данных таблицы ежедневника.

Создание таблицы базы данных

Создайте таблицу базы данных при помощи утилиты Database Desktop (см. инструкции выше) в формате Paradox рис. 6. Таблица должна содержать следующие поля табл. 4.

Таблица 4.

Поля таблицы базы данных MainData

Имя поля

Тип данных

Размер

DateS

Data


FromTime

Time


ToTime

Time


Comment

Alpha

255

Phone

Alpha

255

Рис. 6.- Создание таблицы MainData с помощью утилиты Database Desktop

Сохраните таблицу под именем MainData ( рис. 6.), ключевые поля не задавайте. Введите в нее три записи. Для этого откройте созданную таблицу (File|Open|Table) и воспользуйтесь функцией Edit Data меню Table. Полученная таблица показана на рис. 7.

Рис. 7.-Таблица MainData

Создайте псевдоним (алиас) BD_DNEVNIK по одному из предложенных выше методов. Например, как показано на рис. 8.

Рис. 8. - Создание алиаса для базы данных


7.3.2. Создание программного модуля открытия и редактирования таблицы

Запустите Delphi. Создайте новый проект.

Расположите на форме следующие компоненты (страницы BDE, Data Access, Data Controls): Table1, DBGrid1, DataSource1, DBNavigator1 рис. 9.

Рис. 9.- Расположение компонентов на форме