Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_БД.doc
Скачиваний:
27
Добавлен:
04.05.2019
Размер:
4.03 Mб
Скачать

Тема. Операции с таблицей базы данных.

В приложении можно выполнять создание, удаление, переименование таблиц, а также установку доступа к таблицам.

Для программирования этих действий в приложении необходимо использовать следующие свойства набора данных Table.

Свойства:

DatabaseName –путь к файлам базы данных (папка)

TableType – тип таблицы:

ttDefault – (по умолчанию) формат определяется по расширению названия файла:

DB или отсутствует – таблица Paradox;

DBF – таблица dBase;

TXT – таблица ASCII;

ttParadox – таблица Paradox;

ttDBase – таблица dBase;

ttFoxPro – таблица FoxPro;

ttASCII – таблица ASCII (текстовый файл, разбитый на колонки).

FieldDefsописание полей,

IndexDefs – описание индексов,

TableName – название таблицы, т.е. имя физического файла таблицы, который находится в папке, указанной в свойстве DatabaseName.

IndexName – название индекса;

IndexFieldNames – список столбцов, используемых в индексе таблицы.

Для свойства FieldDefs определены следующие методы:

Clear – очистка значения свойства,

Add(const Name:String; DataType:TFieldType; Size: Word; Required: Boolean) – добавляет к массиву полей описание нового поля, где

Name –название поля,

DataType – тип поля, который выбирается из списка: ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency и т.д.

Sizeразмер поля или 0 (ноль),

Required – определяет, должно ли поле обязательно содержать значение (true) или может быть пустым (false).

Методы:

procedure CreateTable; - на диске создается пустая (без записей) таблица. Если таблица существует, то метод перезаписывает таблицу. Перед вызовом метода необходимо определить следующие свойства набора данных, причем набор данных должен быть закрыт:

- DatabaseNameпуть к файлам базы данных (каталог),

- TableTypeтип таблицы,

- FieldDefs описание полей,

- IndexDefs – описание индексов,

- TableNameназвание таблицы.

procedure DeleteTable; - выполняется физическое удаление всех файлов таблицы, имя которой и путь определены в свойствах DatabaseName и TableName набора данных.

procedure RenameTable(const NewTableName:String) – выполняет переименование всех файлов, относящихся к таблице. Здесь NewTableName – новое название таблицы.

Пример. Создание таблицы на основе набора данных Table.

procedure TForm1.BtnNewTableClick(Sender: TObject);

begin

Table1.Active:=false; // Закрытие набора данных

Table1.DatabaseName:='NewTovar'; // путь к базе данных

Table1.TableName:='NewTable'; // имя создаваемой таблицы

Table1.TableType:=ttParadox; // тип таблицы

// Параметры таблицы

Table1.FieldDefs.Clear;

Table1.FieldDefs.Add('Code',ftAutoInc,0,true);

Table1.FieldDefs.Add('Nazv',ftString,20,True);

Table1.FieldDefs.Add('Cena',ftInteger,0,False);

Table1.FieldDefs.Add('Date',ftDate,0,False);

// Описание полей таблицы

Table1.IndexDefs.Clear;

Table1.IndexDefs.Add('','Code',[ixPrimary, ixUnique]);

Table1.IndexDefs.Add('indNazv','Nazv',[ixCaseInsensitive]);

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

Table1.CreateTable;

// Установка текущего индекса

Table1.IndexName:='indNazv';

//

Table1.Active:=True;

Label1.Caption:=Table1.TableName;

DataSource1.DataSet:=Table1;

DBGrid1.DataSource:=DataSource1;

DBNavigator1.DataSource:=DataSource1;

end;

procedure TForm1.BtnDeleteTableClick(Sender: TObject);

begin

Table1.Active:=False;

Table1.DeleteTable;

Label1.Caption:='Таблица удалена!';

end;

procedure TForm1.BtnRenameTableClick(Sender: TObject);

begin

Table1.Active:=False;

if LabeledEdit1.Text<>''

then Table1.RenameTable(LabeledEdit1.Text)

else Table1.RenameTable('NewTable');

Label1.Caption:=Table1.TableName;

Table1.Active:=True;

end;

Уровень доступа к базе данных определяет возможность записи и чтения данных в таблицу в случае одновременного обращения к ней из различных приложений. Такой режим набора данных Table обеспечивается методами:

LockTable(LockTable:TLockTable) – устанавливается блокировка от вмешательства других приложений. Параметры

ltReadLock – таблица переводится в режим монопольного доступа; Например,

Table1.LockTable(ltReadLock);

ltWriteLock – другим пользователям запрещено записывать данные в таблицу, но разрешено считывать имеющиеся данные. Например,

Table1.LockTable(ltWriteLock);

UnLockTable(LockTable:TLockTable) – снимается блокировка таблицы. Например,

Table1.UnlockTable(ltReadLock);

Table1.UnlockTable(ltWriteLock).