Delphi и расширения ADO - Создание баз данных и их объектов

ОГЛАВЛЕНИЕ

Создание баз данных и их объектов

Первый шаг при создании новой базы данных — создание нового экземпляра объекта Catalog. Это позволяет определить не только тип создаваемой базы данных (с помощью OLE DB-провайдера), но и местоположение файла базы данных. Вот как это можно сделать для базы данных Microsoft Access:

   const
BaseName =   'c:\data\demo.mdb';
DS          =   'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+BaseName;
var
Catalog   : TADOXCatalog;
...
// Создать экземпляр объекта ADOX Catalog
Catalog   := CoCatalog.Create;
// Если база данных существует, удалим ее
If FileExists(BaseName) Then DeleteFile(BaseName);
// Создадим новый MDB-файл
Catalog.Create(DS);
// Укажем активное соединение
Catalog._Set_ActiveConnection(DS);
...

В приведенном выше коде создается новая база данных — заранее заданного типа в заранее заданном каталоге. Затем мы можем добавить в эту базу данных таблицы и поля. Чтобы сделать это, необходимо выполнить такую последовательность действий:

  1. Создать новый экземпляр объекта Table.
  2. Создать новый экземпляр объекта Column.
  3. Определить свойства вновь создаваемого поля.
  4. Добавить объект Column в коллекцию Columns объекта Table.
  5. Повторить шаги 3-4 для каждого нового поля.
  6. Добавить объект Table в коллекцию Tables объекта Catalog.

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

   // ШАГ 1
// Создать новый экземпляр объекта Table
Table             := CoTable.Create;
// Give it the name
Table.Name      := 'Customers';
// И определить Catalog, к которому он принадлежит
Table.ParentCatalog := Catalog;
// ШАГ 2
// Создать новый экземпляр объекта Column
Column := CoColumn.Create;
With Column do
   begin
    ParentCatalog := Catalog;
// ШАГ 3
// Установить свойства
    Name    := 'CustID';
    Type_   := adInteger;
    Properties['Autoincrement'].Value := True;
    Properties['Description'].Value    := 'Customer ID';
   end;
// ШАГ 4
// Добавить поле к коллекции Columns объекта Table
   Table.Columns.Append(Column, 0, 0);
   Column := Nil;
// ШАГ 5
// Создать несколько объектов Columns и добавить их к объекту Table
   With Table.Columns do
    begin
      Append('FirstName', adVarWChar, 64);
      Append('LastName',   adVarWChar, 64);
      Append('Phone',       adVarWChar, 64);
      Append('Notes',       adLongVarWChar, 128);
    end;
// ШАГ 6
// Добавить объект Table в коллекцию Tables объекта Catalog
Catalog.Tables.Append(Table);
Catalog := Nil;

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

   Index := CoIndex.Create;
With Index do
   begin
    Name := 'LastNameIndex';
    IndexNulls := adIndexNullsDisallow;
    Columns.Append('LastName', adVarWChar, 64);
    Columns['LastName'].SortOrder := adSortAscending;
   end;
   Table.Indexes.Append(Index, EmptyParam);

Логика этого примера проста: сначала мы создаем экземпляр объекта Index, затем устанавливаем его свойства — имя, способ обработки «пустых» значений, связываем индекс с полем и, наконец, добавляем его в коллекцию Indexes объекта Table . Примерно то же самое следует делать и при создании ключей.

Обсудив объекты ADOX, мы не коснулись объектов User и Group . В настоящее время в текущей версии ADO эти объекты доступны только для Microsoft Access (Microsoft Jet OLE DB Provider), и пока нет никаких сведений о том, что в последующих версиях ADO будет реализована поддержка этих объектов для других типов баз данных.