Шаг 5.
Основные компоненты Delphi. Вкладка InterBase.
Компонент TIBDatabase

    На этом шаге мы рассмотрим компонент TIBDatabase.

    Компонент TIBDatabase создает соединение с БД InterBase. Свойства компонента TIBDatabase перечислены в таблице 1.

Таблица 1. Свойства компонента TIBDatabase
Свойство Описание
property DatabaseName: String; Указывает имя физической БД, с которой связан компонент (см.ниже)
property DBParamByDPB:[const Idx: Integer] : String; Позволяет проверить или установить заново какой-либо параметр БД
property DBSQLDialect: Integer; Содержит диалект языка SQL, который используется БД
property DefaultTransaction: TIBTransaction; Содержит ссылку на транзакцию, заданную по умолчанию
property Handle: TISC_DB_Handle; Содержит дескриптор соединения. Используется для прямого обращения к API-функциям InterBase
property HandleIsShared: Boolean; Содержит True, если используется разделяемый дескриптор соединения
property IdleTimer: Integer; Указывает время в миллисекундах, по истечении которого автоматически разрывается соединение с БД, если за это время к ней не было обращения
property IsReadOnly: Boolean; Содержит True, если БД работает только в режиме чтения
property Params: TStrings; Содержит список параметров, которые передаются серверу в момент соединения
property SQLDialect: Integer; Содержит диалект языка SQL, который используется компонентом
property SQLObjectCount: Integer; Содержит количество объектов SQL, связанных с данным соединением. К объектам SQL относятся InterBase-наборы данных, IBSQL и BLOB
property SQLObjects [Index:Integer]: TIBBase; Открывает индексированный доступ к SQL-объектам
property TraceFlags: TTraceFlags; Содержит флаги, определяющие различные состояния БД, которые должны прослеживаться в SQL-мониторе(см. ниже)
property TransactionCount: Integer; Указывает количество транзакций, связанных c данный момент с компонентом
property Transactions [Index: Integer]: TIBTransaction; Открывает индексированный доступ к связанным с компонентом транзакциям

    Свойство DatabaseName для локального сервера содержит имя файла БД. При связи с удаленной БД формат имени следующий:

    Компонент может управлять несколькими транзакциями одновременно. Свойство DefaultTransaction ссылается на транзакцию, которой компонент управляет в данный момент. Определение типа для свойства TraceFlags:

     type  TTraceFlag = (tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt,
      tfConnect, tfTransact, tfBlob, tfService, tfMisc); 
    TTraceFlags  =  set  of  TTraceFlag;

    Здесь перечислены следующие флаги:

    Методы компонента TIBDatabase перечислены в таблице 2.

Таблица 2. Методы компонента TIBDatabase
Метод Описание
function AddTransaction (TR: TIBTransaction) : Integer; Устанавливает связь между компонентом и новой транзакцией
procedure ApplyUpdates (const DataSets:array of TIBCustomDataSet) ; Подтверждает кэшированные изменения
procedure CheckActive; Проверяет активность компонента и возвращает ошибку, если связь не установлена
procedure CheckDatabaseName; Возбуждает ошибку, если свойство DatabaseName не заполнено
procedure CheckInactive; Возбуждает ошибку, если связь с БД установлена
procedure Close; Разрывает соединение с БД и закрывает все связанные с компонентом НД. Повторное открытие компонента не открывает заново НД
procedure CloseDataSets; Закрывает все связанные с компонентом наборы данных, но в отличие от метода Close не разрывает связь с сервером и БД
procedure CreateDatabase; Создает новую БД, используя свойство Params как перечень параметров новой БД
procedure DropDatabase; Удаляет существующую БД
function FindTransaction(TR: TIBTransaction):Integer; Возвращает индекс указанной транзакции
procedure ForceClose; Закрывает БД, даже если в результате операции возникла ошибка
procedure GetFieldNaraes (const TableName: String; List: TStrings); Возвращает список имен всех столбцов указанной таблицы. К моменту обращения к методу связь с БД должна быть установлена
procedure GetTableNames (List: TStrings; SystemTables: Boolean = False); Возвращает список всех таблиц БД. Если параметр SystemTables имеет значение True, список дополняется именами системных таблиц
function IndexOf DBConst (st: String): Integer; Возвращает индекс параметра по его имени (если возвращается -1, параметр с нужным именем не найден)
procedure Open; Устанавливает связь с БД
procedure RemoveTransaction(Idx: Integer); Отсоединяет указанную транзакцию от компонента
procedure RemoveTransactions; Отсоединяет все транзакции от компонента
procedure SetHandle; Устанавливает дескриптор для БД
procedure TestConnected: Boolean; Проверяет связь с БД и возвращает True, если связь установлена

    С помощью метода CreateDatabase можно создать новую базу данных. Для этого в свойство DatabaseName помещается информация о месторасположении (компьютер, путь доступа) и имя файла создаваемой БД, а в набор Params - параметры БД, например, такие:

USER "SYSDBA"
PASSWORD "masterkey"
PAGE_SIZE=4096
DEFAULT CHARACTER SET WIN1251

    После выполнения метода будет создана полноценная БД с файлом по адресу, указанному в свойстве DatabaseName.

    События компонента TIBDatabase перечислены в таблице 3.

Таблица 3. События компонента TIBDatabase
Событие Описание
property OnDialectDowngradeWarning: TNotifyEvent; Возникает в момент открытия БД, если номер используемой в ней версии диалекта SQL ниже указанной в свойстве SQLDialect
property OnIdleTimer: TNotifyEvent; Возникает, если время "простоя" БД превысит указанное в свойстве IdleTimer
TDatabaseLoginEvent = procedure (Database: TIBDatabase;LoginParams: TStrings) of object;
property OnLogin: TDatabaseLoginEvent;
Возникает, если свойство LoginPrompt содержит True. В обработчике события регистрационное имя и пароль необходимо поместить во временный список LoginParams

    На следующем шаге мы рассмотрим компонент TIBTransaction.




Предыдущий шаг Содержание Следующий шаг