Базы Данных с нуля
Создание, переименование и удаление

Обычно операции по созданию, переименованию и удалению таблицы Базы Данных происходят на этапе разработки приложения. Но, тем не менее, эти действия можно выполнить и динамически, то есть во время выполнения программы.

Для создания таблицы используется метод CreateTable. При вызове этого метода на диске будет создана пустая таблица. Но, перед тем как вызвать данный метод, необходимо указать положение и тип будущей таблицы, описать поля и индексы таблицы. Для задания местоположения используется стандартное свойство TableName. Для указания типа создаваемой таблицы так же используется стандартное свойство TableType. Для описания полей используется свойство FieldDefs и метод Add. Аналогичным образом происходит описание индексов при помощи свойства IndexDefs. Рассмотрим пример:

procedure TForm1.ButtonMakeTableClick(Sender: TObject);
begin
 // Закрываем набор данных
 Table1.Close;
 // Указываем положение будущей таблицы
 Table1.TableName:='Base\NewBase.db';
 // Задаем тип таблицы
 Table1.TableType:=ttParadox;

 // Создаем поля
 Table1.FieldDefs.Clear;
 Table1.FieldDefs.Add('Code', ftInteger);
 Table1.FieldDefs.Add('Name', ftString, 20, True);
 Table1.FieldDefs.Add('Fam', ftString, 30, True);
 Table1.FieldDefs.Add('BirthDay', ftDate);
 Table1.FieldDefs.Add('Town', ftString, 15, True);

 // Создаем индексы
 Table1.IndexDefs.Clear;
 Table1.IndexDefs.Add('indCode', 'Code', [ixPrimary]);
 Table1.IndexDefs.Add('indName', 'Name', [ixDescending]);
 Table1.IndexDefs.Add('indFam', 'Fam', [ixCaseInsensitive]);
 Table1.IndexDefs.Add('indBirthDay', 'BirthDay', [ixCaseInsensitive]);
 Table1.IndexDefs.Add('indTown', 'Town', [ixCaseInsensitive]);

 // Создаем таблицу БД
 Table1.CreateTable;
 // Указываем текущий индекс
 Table1.IndexName:='indName';
 // Открываем набор данных
 Table1.Open;
 // Связываем источник данных с набором данных
 DataSource1.DataSet:=Table1;
 // Задаем сетке источник данных
 DBGrid1.DataSource:=DataSource1;
end;

Как видно из примера, в свойстве FieldDefs нужно указать имя создаваемого поля, тип поля, размер поля (если он необходим) и последним указываемым параметром является параметр Required, который определяет должно ли поле обязательно содержать некоторое значение или нет. Если указать значение True, то поле должно обязательно содержать некоторое значение, а если False, то поле может не содержать никакого значения. А в свойстве IndexDefs нужно указать имя создаваемого индекса, поле, по которому создается индекс, и параметр.

Обратите внимание на параметры, указываемые в квадратных скобках. Вот список часто используемых значений (наиболее полный список Вы можете посмотреть в справочнике):

  • ixPrimary - Первичный индекс.
  • ixUnique - Уникальный индекс, в котором не допустимы повторения. значений поля.
  • ixCaseInsensitive - Сортировка в независимости от регистра букв.
  • ixDescending - Сортировка записей по убыванию.

Для того чтобы переименовать таблицу необходимо воспользоваться методом RenameTable. В результате вызова данного метода все файлы, относящиеся к таблице, будут переименованы. Но, не нужно забывать, что перед вызовом метода набор данных необходимо закрыть. Вот как это организуется:

procedure TForm1.ButtonRenameTableClick(Sender: TObject);
begin
 Table1.Close;
 Table1.RenameTable('Base\NewBase.db');
 Table1.Open;
end;

Для удаления таблицы нужно воспользоваться методом DeleteTable. Здесь также не нужно забывать, что перед удалением набор данных должен быть закрыт. В результате использования данного метода на диске буду удалены все файлы, относящиеся к таблице.

procedure TForm1.ButtonDeleteTableClick(Sender: TObject);
begin
 Table1.Close;
 Table1.DeleteTable;
end;

Все операции по созданию таблицы Базы Данных для набора данных Query выполняются через специальный SQL-запрос.

Вернуться в оглавление
Вернуться на главную страницу
Hosted by uCoz