Обычно при разработке приложений, использующих базы данных, с помощью утилит конфигурации BDE создаются псевдонимы, указывающие на тип и расположение данных. Компоненты ТТablе, TQuery, TStoredProc обладают свойством DatabaseName, при установке которого на этапе проектирования можно выбрать необходимый псевдоним из выпадающего списка или явно указать каталог, в котором располагаются таблицы локальных баз данных.
Однако иногда бывает необходимо создать псевдоним динамически или переопределить какие-либо параметры настройки драйвера базы. В этом случае обычно используется компонент TDatabase, помещаемый явно па форму или в модуль данных. Если определить свойство DatabaseName этого компонента, оно появится в списке псевдонимов при установке одноименного свойства DatabaseName компонентов ТТablе, TQuery и TStoredProc. Если компонент не был размещен на форме, то он будет создан динамически, с настройками по умолчанию. Так как компонент отвечает за взаимодействие с BDE, его создание будет инициироваться компонентами ТТablе, TQuery и TStoredProc.
Переопределить параметры псевдонима базы данных можно с помощью инспектора объектов. В свойстве TTransIsolation можно определить уровень изоляции транзакции. Также параметры псевдонима базы данных можно изменять в редакторе свойств компонента TDatabase. Окно редактора показано на рисунке. Вызывается редактор двойным щелчком мыши на компоненте.
Редактор свойств компонента TDatabase
Нажав кнопку Defaults, можно установить стандартные настройки данного псевдонима. Обратиться к параметрам псевдонима можно через свойство Params. Также компонент TDatabase используется для сокращения числа обращений к базе данных. К примеру, если на форме расположено несколько компонентов, взаимодействующих с базой данных, то каждый из них обращается к серверу и передает ему параметры, идентифицирующие пользователя. На сервере производится проверка и принимается решение о допуске пользователя к работе.
Для того чтобы минимизировать число обращений к серверу, все компоненты, предназначенные для работы с какой-либо базой данных, связываются через свойство Database с компонентом TDatabase, а тот, в свою очередь, связывается с базой данных. Если приложение должно работать с несколькими базами данных, то в модуле данных размещается несколько компонентов TDatabase.
Повлиять на выполнение серверных транзакций можно путем кэширования внесенных пользователем изменений вместо попытки немедленного сохранения их в базе данных. В этом случае изменения, внесенные пользователем, сохраняются в кэш данных методом Post и отсылаются на сервер методом Apply-Updates. Для включения механизма кэширования измененных данных свойству CachedUpdates компонентов ТТablе и TQuery присваивается значение True.
Кэширование изменений удобно по многим причинам. Во-первых, значительно снижается нагрузка на сеть, так как пересылаются данные не нескольких транзакций, а только одной. А во-вторых, если но каким-либо причинам транзакция не была завершена, то метод вернет значение False, но при этом несохраненные изменения останутся в кэше базы данных. Потом можно попытаться сохранить их еще раз или изменить их.
При выполнении метода ApplyUpdates автоматически запускается транзакция, которая завершается после внесения всех изменений на сервере. В случае успешного завершения транзакции кэш очищается.