Работа с ADO в Delphi. Часть 8. Библиотека ADOX

6 минут на чтение

Итак, данная статья будет посвящена расширению компонентов ADO - ADOX. Библиотека ADOX, возможно в настоящее время, не очень используется, тут скорее всего больше ее заменяют SQL-запросы, но все же, мы ее поверхностно рассмотрим.
Данная библиотека, поможет нам, с помощью компонентов, классов, создавать базу данных MS Access, создавать таблицы MS Access, а также поля, в том числе и ключевые. На самом деле мне нравится данный инструмент, так как с помощью него, можно спокойно делать резервные копии БД MS Access, это мы рассмотрим дальше, после того, как научимся получать список таблиц, а также список полей в БД.

В этой статье, мы рассмотрим, как импортировать данную библиотеку в проект Delphi, на примере IDE Delphi 7. С другой IDE , проблем возникнуть, я думаю, не должно.

Ну, что приступим. Выполним команду Project-Import Type Library…, после чего появится окно и в данном окне, выбираем Microsoft ADO Ext. 6.0 for DLL  and Security (Version 6.0), после чего нажимаем Create Unit, если у Вас в списке только более ранняя версия или наоборот, выбирайте ее:


После, создаем проект и в него подключаем модуль, в uses, ADOX_TLB, кроме этого на форму нашего проекта я поместил TButton.

Теперь, давайте определимся, что у нас будет происходить по нажатию на кнопку, я составил следующее:

  • создаваться БД (файл MDB)
  • создаваться таблица (TestTable)
  • создаваться ключевое поле (id-счетчик)
  • создаваться поля, других типов данных (Фамилия-Текстовый, Возраст-Целочисленный)

Тут, мы определились. Теперь начнем с создания нашей БД. Для создания новой БД, в модуле ADOX_TLB, описан тип — _Catalog, вот им мы и воспользуемся. Для создания правильного файла БД, необходимо написать следующий код:

procedure TForm1.Button1Click(Sender: TObject);
var
 DB:Catalog;
 Tables:Table;
 Columns:Column;
begin
   DB:=CoCatalog.Create;
   DB.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb');
   DB.Set_ActiveConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb');
end;

Тут все очень просто, при помощи функции Create, создаем наш mdb-файл, при этом указывая тип подключения, а также расположение нашей БД. Если файл, уже существует, то естественно будет ошибка. Дальше, при помощи процедуры Set_ActiveConnection устанавливаем активное подключение к нашей БД, чтобы можно было с ней работать, в дальнейшем. Думаю тут все понятно

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

procedure TForm1.Button1Click(Sender: TObject);
var
 DB:Catalog;
 Tables:Table;
 Columns:Column;
begin
   DB:=CoCatalog.Create;
   DB.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb');
   DB.Set_ActiveConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb');
   Tables:=CoTable.Create;
   Tables.Name:='TestTable';
   Tables.ParentCatalog:=DB;
   DB.Tables.Append(Tables);
end;

Инициализируем переменную Tables, затем с помощью свойства Name - задаем имя нашей таблицы, а с помощью свойства ParentCatalog, указываем базу данных, к которой будет принадлежать наша таблица, затем просто добавляем таблицу в нашу БД.

Теперь приступаем к созданию наших полей, для этого существует тип — _Column, но можно обойтись и без него, что дальше мы и рассмотрим это. Начнем мы с создания ключевого поля, для этого необходимо задать его имя, задать ему тип данных, а также указать, что оно будет автоматически увеличиваться, при добавлении новой записи в БД, то есть increment, ну и добавить описание данного поля. Делается это, следующим образом:

procedure TForm1.Button1Click(Sender: TObject);
var
 DB:Catalog;
 Tables:Table;
 Columns:Column;
begin
   DB:=CoCatalog.Create;
   DB.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb');
   DB.Set_ActiveConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb');
   Tables:=CoTable.Create;
   Tables.Name:='TestTable';
   Tables.ParentCatalog:=DB;
   DB.Tables.Append(Tables);
   Columns:=CoColumn.Create;
   with Columns do
    begin
     ParentCatalog:=DB;
     Name:='id';
     type_:=adInteger;
     Properties['Autoincrement'].Value:=True;
     Properties['Description'].Value:='Ключевое поле';
    end;
   Tables.Columns.Append(Columns,0,0);
end;

С помощью свойства Name - указываем имя нашего поля, затем с помощью свойства ParentCatalog - указываем БД, где находится наша таблица, с помощью свойства _type - указываем тип нашего поля, а с помощью свойства Properties - указываем описание поля, а также его тип, в нашем случае increment.

В самом конце добавляем в нашу таблицу поле, с помощью процедуры Append, где последние 2 параметра — 0, так как, мы уже указали тип нашего поля.

Ну, а теперь создадим оставшиеся поля — это Фамилия и Возраст, но уже не будем использовать тип _Column. Для этого, сразу воспользуемся процедурой Append объекта CoTable.

procedure TForm1.Button1Click(Sender: TObject);
var
 DB:Catalog;
 Tables:Table;
 Columns:Column;
begin
   DB:=CoCatalog.Create;
   DB.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb');
   DB.Set_ActiveConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb');
   Tables:=CoTable.Create;
   Tables.Name:='TestTable';
   Tables.ParentCatalog:=DB;
   DB.Tables.Append(Tables);
   Columns:=CoColumn.Create;
   with Columns do
    begin
     ParentCatalog:=DB;
     Name:='id';
     type_:=adInteger;
     Properties['Autoincrement'].Value:=True;
     Properties['Description'].Value:='Ключевое поле';
    end;
   Tables.Columns.Append(Columns,0,0);
   Tables.Columns.Append('Фамилия',adVarWChar,255);
   Tables.Columns.Append('Возраст',adInteger,0);
end;

В итоге, у меня получилось следующее:


Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Всем здравствуйте, в этой статье я хотел бы снова обратить внимание на Базы данных, а в частности работа с Базами данных по технологии ADO. Когда пользователь создает приложение на Delphi, работающего с СУБД, к которой присоединяется по технологии ADO, то к фа...
Всем привет, и вот мой первый урок, думаю урок полезный, так как работа с базами данных в Delphi очень важно, а тем более Access на мой взгляд самая легкая база данных, с которой можно работать в Delphi. В этой статье я расскажу Вам как эту самую Базу данных A...
Ну вот не долго думая, подошла вторая часть по работе с ADO в DELPHI на примере БД — MS Excel. В данной статье мы рассмотрим добавление и редактирование данных, так как с удалением тут возникли проблемы, в связи с тем, что данный драйвер не поддерживает удален...