Компонент
TIBDatabase
Так как для доступа к базе данных компонентам InterBase Express
не требуется BDE, то для создания соединения используется всего одно свойство
DatabaseName. В нем необходимо указать полный путь (включая имя сервера) к выбранному файлу БД с расширением gdb. Для этого можно воспользоваться стандартным диалогом выбора файла при щелчке на кнопке свойства в Инспекторе объектов.
Компонент имеет собственный редактор, который позволяет задать значения основных свойств, обеспечивающих соединение с базой данных (рис. 18.1).
Рис. 18.1. Редактор компонента
TIBDatabase
Настройка соединения проводится следующим образом.
На панели Connection выбирается требуемый
сервер InterBase (локальный или доступный удаленно), затем в списке Protocol
определяется используемый сетевой протокол и при помощи кнопки Browse
выбирается файл базы данных.
На панели Database Parameters задаются
имя пользователя, его пароль и роль. Также можно выбрать и набор шрифтов для
языковой адаптации приложения (список Character Set).
Для задания вводимых при подключении параметров
(имя пользователя, пароль, схема, роль и т. д.) также можно использовать свойства
Params и LoginPrompt.
Путь к файлу базы данных задается свойством
property DatabaseName:
String;
Соединение включается и отключается свойством
property Connected
: Boolean;
При этом свойство
property AllowStreamedConnected
: Boolean;
управляет включением соединения при запуске
приложения и служит дополнительным предохранителем. При значении
False свойство запрещает открытие соединения при запуске приложения,
даже если свойство Connected имело значение
True. Так как часто приложение отлаживается
на тестовой базе данных, а используется на реальной, то неверный путь в свойстве
DatabaseName и не отключенное на этапе
разработки свойство connected приведет
к возникновению ошибки открытия соединения при запуске приложения на другом
компьютере.
Параметры соединения, которые нельзя задать
свойствами, устанавливаются свойством
property Params:
TStrings;
в котором в каждой строке задается имя параметра
и затем через знак равенства — его значение. Наиболее распространенный пример
использования свойства Params — задание
имени пользователя и его пароля:
user_name=sysdba
password=masterkey
Свойство
property DBParamByDPB:
[const Idx: Integer]: String;
позволяет получить доступ к отдельным параметрам
соединения, не обращаясь к свойству Params.
Примечание
Полный список индексов всех возможных параметров
соединения Interbase можно найти в файле \Delphi7\Source\Vcl\IBHeader.pas.
Если соединение настроено правильно, метод
procedure TestConnected:
Boolean;
возвращает значение True,
иначе — False. Свойство
property IdleTimer:
Integer;
задает временной интервал до отключения неиспользуемого
соединения.
В компоненте
TiBDatabase отсутствуют средства управления транзакциями, которые вынесены
в отдельный компонент TiBTransaction (см.
ниже).
Свойство
property DefaultTransaction:
TiBTransaction;
позволяет задать транзакцию по умолчанию. При
этом все компоненты с наборами данных, использующие данное соединение автоматически,
начинают применять этот компонент транзакции. Изменяя значение этого свойства,
можно в одном соединении работать с несколькими транзакциями.
Общее число связанных с данным соединением транзакций
возвращает свойство
property TransactionCount:
Integer;
а их полный перечень содержится в индексированном
списке свойства
property Transactions
[Index: Integer]: TIBTransaction;
Добавить к списку используемых новую транзакцию
можно при помощи метода
function AddTransaction(TR:
TIBTransaction): Integer;
Отменить связь между соединением и компонентом
транзакции позволяет метод
procedure RemoveTransaction(Idx:
Integer);
Но можно поступить и более радикально. Метод
procedure RemoveTransactions;
отменяет связи со всеми транзакциями.
Используемый в методе
RemoveTransaction индекс транзакции может быть найден методом
function FindTransaction
(TR: TIBTransaction): Integer;
а метод
function FindDefaultTransaction:
TIBTransaction;
возвращает транзакцию по умолчанию.
С компонентом соединения можно связать произвольное
число объектов, отслеживающих возникновение событий в базе данных
InterBase (см. ниже). Для этого используется метод
procedure AddEventNotifier(Notifier:
IIBEventNotifier);
который связывает с соединением либо интерфейс
IIBEventNotifier, либо объект TIBEvents.
Парный ему метод
procedure RemoveEventNotifier{Notifier:
IIBEventNotifier);
разрывает связь соединения с объектом-обработчиком
событий. Свойство
type
TTraceFlag
= (tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt,
tfConnect,
tfTransact, tfBlob, tfService, tfMisc);
TTraceFlags
= set of TTraceFlag;
property TraceFlags:
TTraceFlags;
позволяет управлять сведениями о выполнении
запросов, возвращаемыми компонентом TSQLMonitor
(см. ниже описание этого компонента).
Группа методов позволяет судить о реальном состоянии
соединения во время выполнения. Все они в случае неудачи проверки генерируют
исключение
EIBClientError.
Методы
procedure CheckActive;
И
procedure Checklnactive;
проверяют, функционирует или нет соединение.
Метод
procedure CheckDatabaseName;
проверяет, заполнено ли свойство DatabaseName.
Компонент TiBDatabase
позволяет выполнять некоторые операции с метаданными базы данных.
При помощи метода
procedure CreateDatabase;
можно создавать новые базы данных, включая создание
файла базы данных. Все параметры новой базы данных, которые разработчик посчитает
нужным указать явно, должны быть включены в список свойства
Params (см. выше).
Имя файла новой базы данных должно быть указано
в свойстве
procedure DropDatabase;
удаляет существующую базу данных, путь к которой
указан свойством
DatabaseName.
Список List
имен таблиц, имеющихся в базе данных, возвращает метод
procedure GetTableNames(List:
TStrings; SystemTables: Boolean = False);
При этом параметр
SystemTables управляет включением в список имен системных таблиц.
Метод
procedure GetFieldNames(const
TableName: string; List: TStrings);
аналогичным образом возвращает список полей
для таблицы, заданной параметром TableName.
Методы-обработчики событий компонента
TiBDatabase представлены в табл. 18.1.
Таблица 18.1. Методы-обработчики
событий компонента TiBDatabase
|
|
|
property
Af terConnect: TNotifyEvent;
|
|
Выполняется после открытия соединения
|
property
AfterDisconnect: TNotifyEvent;
|
|
Выполняется после закрытия соединения
|
property
Bef oreConnect: TNotifyEvent;
|
|
Выполняется перед открытием соединения
|
property
BeforeDisconnect: TNotifyEvent;
|
|
Выполняется перед закрытием
соединения
|
property
OnDialectDowngradeWarning: TNotifyEvent;
|
|
Выполняется в случае изменения
диалекта SQL при открытии соединения
|
property
OnldleTimer: TNotifyEvent;
|
|
Вызывается по истечении времени,
заданного свойством
dleTimer
|
TDatabaseLoginEvent
= procedure (Database : TiBDatabase; LoginParams: TStrings) of object;
property
OnLogin: TDatabaseLoginEvent ;
|
|
Вызывается для регистрации пользователя
при открытии соединения
|
|