Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа7.doc
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
461.82 Кб
Скачать
    1. Создание таблиц базы данных

Создать или изменить структуры таблиц БД можно несколькими способами (предполагается, что мы создаем локальную базу данных в формате Paradox):

  1. При помощи программы Database Desktop. Поставляемой совместно с Delphi. Запустить ее можно при помощи меню Пуск/Программы/Borland Delphi/Database Desktop. Недостатком метода является то, что при удалении (или повреждении) таблицы все действия по созданию нужно повторить заново.

  1. При помощи SQL-запроса. Запустить запрос можно в любой программе поддерживающей SQL. Например, в том же Database Desktop: выбрать меню File/New/SQL file…, затем набрать SQL-запрос и выбрать меню SQL/Run SQL. Или написав процедуру обработки SQL-запросов в Delphi:

procedure TForm1.Button1Click(Sender: TObject);

begin

Query1.DataBaseName:='c:\work';

Query1.SQL.Assign(Memo1.Lines);

Query1.ExecSQL;

end;

Предполагается, что на форме находятся компоненты Button1 (обработчик OnClick которого вызывает эту процедуру), Memo1 (в который предварительно набирается текст SQL-запроса) и Query1 (набор данных обрабатывающий SQL-запросы). “Недостатком” этого подхода является необходимость знания синтаксиса SQL-языка.

  1. Программно в Delphi, при помощи компонента TTable, написав обработчик какого-либо события. Этот метод более громоздкий, но зато позволяет организовать восстановление структуры БД в процессе эксплуатации (то есть после того как программа попала к пользователю вашей БД).

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

Paradox

SQL

Delphi

Описание

-

-

ftUnknown ftVariant

Неизвестный или неопределенный

Alpha

Char(n)

ftString

Строка символов (не более 255)

Short

Smallint

ftSmallint

16-битное целое число

Long Integer

Integer

ftInteger

32-битное целое число

Logical

Boolean

ftBoolean

Логическое

Number

Numeric(x,y)

ftFloat

Действительное число

$(Money)

Money

ftCurrency

Денежный

#(BCD)

Decimal(x,y)

ftBCD

Двоично-десятичное число

Date

Date

ftDate

Дата

Time

Time

ftTime

Время

@(Timestamp)

Timestamp

ftDateTime

Дата и время

Bytes

Bytes(n)

ftBytes

Массив до 255 байтов

+(Autoincrement)

Autoinc

ftAutoInc

Автоинкрементное 32-битное целое число

Memo

BLOB(n,1)

ftMemo

Строка символов. Длина не ограничена.

Binary

BLOB(n,2)

ftBlob

Массив байтов любой длины.

Formatted Memo

BLOB(n,3)

ftFmtMemo

Форматированный текст

OLE

BLOB(n,4)

ftParadoxOle

OLE-поддерживаемый формат

Graphics

BLOB(n,5)

ftGraphic

Рисунок в формате BMP

Ниже приведены примеры работы с таблицей “c:\work\NewTable.db” для каждого из этих способов.

Database Desktop

SQL

Delphi

Создание таблицы Содержащей поля: Id – число , Name – до 20-ти букв, Birthday – дата; ключ по полю Id и индекс по Birthday.

Выберите пункт меню File/New/Table. В появившемся диалоговом окне выбрать тип таблицы – “Paradox” и нажать “Ok”.

В поле “Field Name” введите имя первого поля “Id”. Чтобы задать его тип щелкните правой кнопкой мыши в соседней ячейке (столбец “Type”) и выберите “Long Integer” или просто нажмите на “I”. Для создания второго поля нажмите на клавиатуре “стрелку вниз”. Аналогичным образом задаются остальные поля. Не забудьте указать размер (столбец “Size”) для текстового поля (тип “Alpha”).

Для создания первичного ключа, дважды щелкните мышкой в столбце “Key” поля “Id” – появиться звездочка.

В окне “Table properties” выберите “Secondary Indexes” и нажмите на кнопку “Define…”. В списке “Fields” дважды щелкните по полю “ Birthday” и нажмите “Ok”. Задав имя индекса, снова нажмите “Ok”.

Для сохранения таблицы нажмите на кнопку “Save as…”.В появившемся окне, при помощи выпадающего списка “Папка”, выберите каталог “C:\work”, в поле “Имя файла” наберите “NewTable” и нажмите на кнопку “Сохранить”.

CREATE TABLE NewTable (Id INTEGER, Name CHAR(20), Birthday DATE, PRIMARY KEY (Id)); CREATE INDEX indBirthday ON NewTable (Birthday)

with Table1 do begin

Active := False;

DatabaseName := 'c:\work';

TableName := 'NewTable';

{определение полей}

with FieldDefs do begin

Clear;

With AddFieldDef do begin

Name := 'Id';

DataType := ftInteger;

end;

with AddFieldDef do begin

Name := 'Name';

DataType := ftString;

Size := 20;

end;

with AddFieldDef do begin

Name := 'Birthday';

DataType := ftDate;

end;

end;

{определение индексов}

with IndexDefs do begin

Clear;

with AddIndexDef do begin

Fields := 'Id';

Options := [ixPrimary];

End;

With AddIndexDef do begin

Name := ' Birthday';

Fields := ' Birthday';

Options: = [];

End;

End;

CreateTable;

Active:=True;

end;

Удаление таблицы

Выберите пункт меню File/Tools/Utilites/Delete. В появившемся окне выберите таблицу для удаления и нажмите “Delete”. Подтвердите свои намерения в следующем окне, и таблица со всеми своими файлами удалиться.

DROP TABLE NewTable

with Table1 do begin

Active := False;

DatabaseName := 'c:\work';

TableName := 'NewTable';

DeleteTable;

End;

Изменение структуры таблицы Добавление текстового поля Adress и удаление поля Birthday

Откройте изменяемую таблицу (меню File/Open/Table) и выберите пункт меню Table/Restructure… Появиться окно как и при создании таблицы, работа с ним описана выше. Для вставки нового поля перед выбранным полем – нажмите клавишу “Insert”. Для удаления поля – “Ctrl – Delete”.

ALTER TABLE NewTable ADD Adress CHAR(50), DROP Birthday

В Delhpi нет процедур высокого уровня для изменения структуры таблиц. При большой необходимости можно воспользоваться функцией DbiDoRestructure (по аналогии с использованием функции DbiCreateTable в процедуре TTable.CreateTable), а лучше SQL-запросом в компоненте TQuery.