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);
...
В приведенном выше коде создается новая база данных — заранее заданного типа в заранее заданном каталоге. Затем мы можем добавить в эту базу данных таблицы и поля. Чтобы сделать это, необходимо выполнить такую последовательность действий:
- Создать новый экземпляр объекта Table.
- Создать новый экземпляр объекта Column.
- Определить свойства вновь создаваемого поля.
- Добавить объект Column в коллекцию Columns объекта Table.
- Повторить шаги 3-4 для каждого нового поля.
- Добавить объект 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 будет реализована поддержка этих объектов для других типов баз данных.