Всем здравствуйте, в этой статье я хотел бы снова обратить внимание на Базы данных, а в частности работа с Базами данных по технологии ADO. Когда пользователь создает приложение на Delphi, работающего с СУБД, к которой присоединяется по технологии ADO, то к файлам проекта автоматически подключается библиотека (модуль) ADODB, я думаю, что Вы в курсе этого дела. Если его открыть, то мы увидим обычный программный код, но кроме обычного программного кода мы можем найти также в нем очень полезные сервисные процедуры и функции, о которых грех не знать программисту (ну или хотя бы в данном случае полезно узнать), который работает с СУБД по технологии ADO.

Итак давайте приступим, в первую очередь познакомлю Вас и рассмотрим мы процедуру

Procedure CreateUDLFile(const FileName, ProviderName,DataSourceName:WideString);

Данная функция помогает программистам создать файл соединения к нашей СУБД программным способом.

Теперь немного пройдемся по параметрам нашей функции:

FileName – имя будущего UDL-файла, в котором собственно и будут храниться наши настройки подключения к СУБД;

ProviderName – имя провайдера, который записывается в файл UDL. В нашем случае, так как мы работаем с СУБД MS Access 2003, то этот параметр будет содержать в себе — Microsoft.Jet.OLEDB.4.0;

DataSourceName – этот параметр содержит имя источника данных, то есть полный путь к нашей БД, вместе с ее расширением, например — C:\Program Files\Common Files\Borland Shared\Data\DBDEMOS.mdb.

Теперь напишем код программы, который поможет нам создать файл соединения, который в дальнейшем можно открыть через текстовый редактор – Блокнот, итак приступим, на событие OnClick нашей кнопки пишем следующий код:

procedure TForm1.Button2Click(Sender: TObject);
begin
   Filename:=DataLinkDir+'\tst2.udl';
   try
    CreateUDLFile(Filename,'Microsoft.Jet.OLEDB.4.0','test');
    except
     on e:Exception do
      begin
       //обрабатываем ошибку при создании файла
      end;
    end;
end;

Если у Вас на форме не размещены никакие компоненты вкладки ADO, то не забудьте подключить модуль ADODB, в uses.

Также стоит обратить внимание на то, что при формировании имени файла при помощи функции DataLinkDir, мы выясняем штатный (по умолчанию) каталог Windows, где зранятся все UDL-файлы. По умолчанию это будет каталог: C:\Program Files\Common Files\System\Ole BD\Data Links

Замечение:

Саму строку соединения возможно хранить в специальном файле связи данных (UDL-файле), как мы и выяснили ранее. Также мы можем создать файл связи данных и вручную, для этого нам необходимо открыть текстовый редактор, например Блокнот и внести туда необходимые данные (по шаблону UDL-файла), затем просто-напросто изменить расширение *.txt на *.udl и запустить его на выполнение, а он уже в дальнейшем вызовет редактор для настройки нашей соединительной строки с БД.

Также есть функция:

Function GetDataLinkFiles(FileNames:TStrings;Directory:string = ‘’):Integer;

Данная функция помогает нам собрать (получить) весь перечень UDL-файлов из указанного каталога, который мы задаем в параметре Directory.

Результатом выполнения функции будет следующее:

А вернет она значение, которое равно количеству найденным файлам.

Если параметр Directory оставить пустым параметром, то есть не передавать туда никакого значения, то сам поиск файлов функцией будет происходить в каталоге по умолчанию, который задается, как мы и рассматривали ранее путем - C:\Program Files\Common Files\System\Ole DB\Data Links. Сами собранные файлы, которые нашла функция GetDataLinkFiles, передаются в параметр (в список) FileNames, ну а как я говорил раньше сама функция возвращает число найденных файлов.

Теперь давайте рассмотрим процедуру (перегружаемый метод), который поможет нам получить полный список имеющих в нашей системе провайдеров (самих драйверов OLE DB, с помощью которых мы подключаемся к нашим СУБД), для это существуют следующие перегружаемые методы:

Procedure GetProviderNames(Names:TStrings);overload;

Procedure GetProviderNames(Names:TWideStrings);overload;

Если мы вызовем данную процедуру, то результат ее выполнения будет следующим:

То есть наш метод вывел в компонент TListBox все наши провайдеры (драйвера) для подключения к СУБД. Теперь Вы понимаете, что можете делать собственный диалог подключения к СУБД.

Для самого вызова диалога (открытия UDL-файлов) используется функция:

Function PromptDataLinkFile(ParentHandle:THandle;InitialFile:WideString);WideString

Сама функция возвращает имя нашего выбранного файла. ParentHandle – это указатель на саму форму, которая будет владеть вызовом диалога выбора файла UDL, а параметр InitialFile – сам файл, который инициализирует каталог диалога файлов и фильтр по расширению файлов. А сама функция возвращает имя файла, который выбрал пользователь.

Также можно использовать стандартные диалоги для создания соединительной строки, вместо того, чтобы изобретать велосипед, о чем я писал выше.

Для этих целей в модуле ADODB используется функция:

Function PromptDataSource(ParentHandle:THandle;InitialString:WideString):WideString;

Данная функция вызывает диалоговое окно для определения параметров соединительной строки с СУБД. Данные параметры функции аналогичны и параметрам функции PromptDataLinkFile(), одно лишь отличие в них возвращаемом результате функции. Данная функция возвратит саму текстовую строку для соединения СУБД, а вызовет она следующий диалог:

Итак, подводим теперь краткие итоги. В данной статье мы рассмотрели основные сервисные методы (функции и процедуры) модуля ADODB, с помощью которых мы можем предоставить возможность пользователю самостоятельно создать подключение к конкретной СУБД, а также сохранить настройки подключения в файле и в дальнейшем их открывать. Исходников к данной статье я никаких не прикладываю, потому что тут итак все должно быть понятно. До встречи в следующих статьях по работе с ADO в Delphi.

Метки: , , , , , ,




К записи “Работа с ADO в Delphi. Часть 10.Сервисные процедуры и функции модуля ADODB.” оставлено комментариев: 1.

  1. Максим:

    Ругается на

    Filename:=DataLinkDir+’\tst2.udl';

    Неизвестный идентификатор

Оставить комментарий на Максим

Вы можете использовать следующие теги:

*