Компонент 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; |
Pb |
Выполняется после открытия соединения |
property AfterDisconnect: TNotifyEvent; |
Pb |
Выполняется после закрытия соединения |
property Bef oreConnect: TNotifyEvent; |
Pb |
Выполняется перед открытием соединения |
property BeforeDisconnect: TNotifyEvent; |
Pb |
Выполняется перед закрытием соединения |
property OnDialectDowngradeWarning: TNotifyEvent; |
Pb |
Выполняется в случае изменения диалекта SQL при открытии соединения |
property OnldleTimer: TNotifyEvent; |
Pb |
Вызывается по истечении времени, заданного свойством dleTimer |
TDatabaseLoginEvent = procedure (Database : TiBDatabase; LoginParams: TStrings) of object; property OnLogin: TDatabaseLoginEvent ; |
Pb |
Вызывается для регистрации пользователя при открытии соединения |