Всем здравствуйте, в этой статье я хотел бы снова обратить внимание на Базы данных, а в частности работа с Базами данных по технологии 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.
Похожие записи
Метки: Access, Ado, ADoconnection, AdoQuery, delphi, MS Access, БД
Ругается на
Filename:=DataLinkDir+’\tst2.udl';
Неизвестный идентификатор