M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

    Компонент 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

     

    Вызывается для регистрации пользователя при открытии  соединения