|
Компонент 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 ;
|
|
Вызывается для регистрации
пользователя при открытии соединения
|
|