Главная » Delphi » Применение dbExpress при разработке баз данных

0

Применение dbExpress

DbExpress разработан как эффективное средство доступа  к данным, несущее  ми нимальные непроизводительные затраты. Для этого  dbExpress использует односторон ние наборы данных (unidirectional dataset).

Односторонние наборы данных

Суть односторонних наборов данных  заключается в том,  что  они  не буферизируют данные при  навигации или  модификации. В отличие от используемых в BDE двухсто ронних наборов данных с буферизацией в оперативной памяти, односторонние наборы отличаются большей эффективностью, но обладают и некоторыми ограничениями:

•   Односторонние наборы данных  обладают  всего  лишь  двумя навигационными методами:  First() и  Next().  Попытка  вызова   иных   методов,  например Last() или Prior(), приведет к исключению.

•   Данные односторонних наборов нельзя  редактировать, поскольку  для них  не выделяется буфер,  пригодный для редактирования. Обратите внимание: если данные  необходимо редактировать, то применяются другие компоненты (TClientDataset и TSQLClientDataset), рассматриваемые далее.

•    Односторонние наборы данных не поддерживают фильтрацию, поскольку от

сутствие буфера не позволяет создавать набор  для нескольких записей.

•   Односторонние наборы данных не поддерживают подстановочные поля.

DbExpress против Borland Database Engine (BDE)

По сравнению с BDE, dbExpress обладает некоторыми преимуществами. Рассмот

рим их кратко.

В отличие от BDE, средства dbExpress не расходуют  ресурсы  сервера на хранение метаданных внешних запросов.Кроме того,  при работе с dbExpress расходуется меньше  ресурсов  клиента, так как при  использовании односторонних курсоров отсутствует  кэширование данных.  При этом  метаданные на стороне клиента также  не кэшируются, поскольку  доступ к ним осуществляется через процедуры интерфейса DLL.

В отличие от BDE, в dbExpress не создаются внутренние запросы для таких  задач, как навигация и обращение к данным  типа BLOB. Благодаря этой  особенности средст ва dbExpress во время  выполнения приложений работают намного эффективнее, по скольку на сервере обрабатываются лишь пользовательские запросы. Другими  слова ми, dbExpress намного проще BDE.

Использование dbExpress при разработке межплатформенных приложений

Главным преимуществом dbExpress является возможность переноса приложений с платформы Windows  (Delphi 6) на платформу  Linux  (Kylix). Разработанное в Delphi приложение, в котором используются компоненты CLX, может  быть откомпилирова но в Kylix и работать в среде Linux.  Фактически средства dbExpress взаимодействуют с серверами, не зависящими от типа платформы (например MySQL или InterBase).

НА ЗАМЕТКУ

На момент написания этой книги в dbExpress была реализована поддержка MySQL версии 3.22. Тем не менее, после обновления соответствующей библиотеки DLL в Delphi 6 можно работать и с более поздней версией 3.23 На данный момент в Borland ведутся работы по обновлению этой библиотеки.

Компоненты dbExpress

Все  компоненты  dbExpress  расположены  во  вкладке  dbExpress  палитры  компо

нентов.

Компонент TSQLConnection

Тому,  кто  раньше разрабатывал приложения с использованием BDE,  компонент класса TSQLConnection покажется очень  похожим на компонент класса TDatabase. И  в самом  деле —  оба  эти  компонента инкапсулируют методы  подключения к базам данных.  Именно через компонент TSQLConnection наборы данных  dbExpress осуще ствляют доступ к серверу.

Объекты  класса   TSQLConnection используют   два   конфигурационных  файла: dbxdrivers.ini и dbxconnections.ini. При  установке эти файлы размещаются в каталоге \Program Files\Common Files\Borland Shared\DbExpress. Файл  dbx- drivers.ini содержит перечень всех  драйверов, поддерживаемых dbExpress, и их специфические параметры. Файл  dbxconnections.ini содержит перечень так  на зываемых именованных соединений (named connections), которые по сути аналогичны псевдонимам (alias)  BDE. В этом  же файле хранятся и параметры, специфические для каждого  именованного соединения. Во время  выполнения приложения установлен ный  по  умолчанию  файл  dbxconnections.ini можно  не  использовать. Для  этогосвойству  TSQLConnection.LoadParamsOnConnect необходимо присвоить значение

True. Соответствующий пример будет рассмотрен немного позднее.

Для подключения к базе данных компонент TSQLConnection использует соответ 

ствующий драйвер dbExpress, указанный в файле dbxdrivers.ini.

Методы и свойства класса TSQLConnection достаточно полно описаны в интерак 

тивной  справочной  системе.  Как  обычно,  за  более  подробной  информацией  реко

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

Подключение к базе данных

Для подключения к уже существующей  базе данных  достаточно просто разместить в форме компонент TSQLConnection и выбрать одно из значений в раскрывающемся списке   свойства ConnectionName в  инспекторе  объектов. В  этом  списке   должно быть,  по  крайней мере,  четыре элемента: IBLocal, DB2Connection, MSConnection и Oracle. Если при установке Delphi  не был установлен InterBase, то сделайте это прямо сейчас, поскольку  он будет использоваться в примерах. Установив InterBase, выбери те в списке  свойства ConnectionName значение IBLocal. Это соединение соответству ет локальной базе данных  InterBase, которая устанавливается вместе с Delphi  6.

После  выбора значения для свойства ConnectionName будут автоматически ини циализированы такие  свойства, как DriverName, GetDriverFunc, LibraryName, и VendorLib. Это  стандартные значения, хранящиеся в файле dbxdrivers.ini. Ос тальные параметры драйвера можно  просмотреть и модифицировать в редакторе свойства Params (рис. 8.1).

Рис. 8.1. Редактор свойства TSQLConnection.Params

НА ЗАМЕТКУ

По умолчанию в редакторе свойства Params для параметра Database указано значе- ние database.gdb. На самом же деле базы данных с таким названием не существует, поэтому данное значение можно изменить на Employee.gdb. Эта база данных уста- навливается вместе с InterBase и находится обычно в каталоге …\Program Files\Borland\ InterBase6\examples\Database\Employee.gdb.После  того как для компонента класса TSQLConnection будет подключен к реаль ной базе данных, можно  присвоить свойству  Connected значение True. В результате на экране появится приглашение ввести  имя пользователя и пароль. Введите  в соот ветствующих полях  значения “sysdba” и “masterkey”. Подключение к базе  данных будет завершено. Остальные свойства класса  TSQLConnection подробно описаны в интерактивной справочной системе.

Создание нового соединения

Для обращения к базе данных  можно  создавать дополнительные именованные со единения. Они,  например, могут использоваться в тех приложениях, которые под ключаются к двум различным базам данных.  Чтобы создать  новое  соединение, доста точно открыть редактор свойств подключения, дважды щелкнув на компоненте SQLConnection (рис. 8.2).  Этот  редактор можно   вызвать иначе,  щелкнув  правой кнопкой мыши на компоненте класса TSQLConnection и выбрав из контекстного ме ню пункт Edit Connection Properties (Изменить свойства подключения).

Рис. 8.2. Компонент соединения TSQLConnection в окне редактора свойств

На панели  инструментов данного редактора свойств расположено пять кнопок. Рассмотрим кнопку Add (Добавить). Если щелкнуть  на этой  кнопке, то на экране поя вится  диалоговое окно,  в котором можно  указать имя и драйвер для нового соедине ния. В раскрывающемся списке  Driver Name можно  выбрать один из четырех возмож ных драйверов. В данном  случае выберем драйвер InterBase. В поле Connection Name (Имя  соединения) можно  ввести  любую строку,  например “MyIBConnection”. После щелчка  на кнопке OK параметры соединения, совпадающие со значениями свойства TSQLConnection.Params, будут отображены в таблице Connection Settings. Для но вого  соединения также  необходимо изменить значение параметра Database, чтобы он  указывал  на  реальную   базу  данных   InterBase. Теперь  можно   закрыть редактор свойств   соединения, присвоить свойству  Connected значение True и  ввести   имя пользователя и пароль, в результате будет осуществлено подключение к базе данных.

Ввод имени пользователя и пароля при подключении к базе данных

Присвоив значение False свойству  LoginPrompt, можно  отключить запрос на ввод имени пользователя и пароля при подключении к базе данных.  Однако  при этом для  параметров UserName и Password в редакторе свойства Params должны  быть указаны корректные значения.

Для того чтобы  изменить стандартный запрос на ввод имени пользователя и паро ля, необходимо присвоить свойству  LoginPrompt значение True, а в обработчик со бытия OnLogin добавить примерно такой код:

procedure TMainForm.SQLConnection1Login(Database: TSQLConnection; LoginParams: TStrings);

var

UserName: String;

Password: String;

begin

if InputQuery(‘Get UserName’, ‘Enter UserName’, UserName) then

if InputQuery(‘Get Password’, ‘Enter Password’, Password) then

begin

LoginParams.Values[‘UserName’] := UserName;

LoginParams.Values[‘Password’] := Password;

end;

end;

В этом  примере для  ввода  значений используется  функция  InputQuery(), но можно разработать и собственное диалоговое окно. Пример, демонстрирующий поль зовательское  диалоговое  окно   регистрации,  находится  на  прилагаемом  компакт диске. Кроме  того,  в этом примере демонстрируется использование событий After- Connect и AfterDisconnect.

Загрузка параметров подключения во время выполнения приложения

Параметры подключения, которые отображаются в редакторе свойства Params во время  разработки, по умолчанию загружаются из файла  dbxconnections.ini. Зна чения таких  параметров можно  извлекать и во время  выполнения приложения. Это может  понадобиться, например, в том  случае,  если  используется файл  dbxconnec- tions.ini, отличный от  того,  который поставляется с Delphi. Конечно, при  этом модифицированный конфигурационный файл должен  распространяться вместе с приложением.

Для загрузки  значений параметров подключения во время  выполнения приложения необходимо присвоить значение True свойству  LoadParamsOnConnect. При  загрузке приложения   компонент  класса    TSQLConnection определяет   размещение   файла dbxconnections.ini на основании содержимого ключа системного реестра Connection Registry File в ветви HKEY_CURRENT_USER\Software\Borland\DBExpress. Изменение значения этого ключа можно сделать в момент установки приложения.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии