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

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

    Компонент TIBSQL предназначен для выполнения SQL-запросов с минимальными затратами времени. Он не может быть связан с компонентом TDataSource и, следовательно, с визуализирующими компонентами. В отличие от других компонентов-наборов, компонент TIBSQL произошел непосредственно от компонента TComponent, поэтому все его свойства, методы и события "свои", хотя многие из них в функциональном отношении повторяют одноименные свойства, методы и события других компонентов-наборов. Для ускорения доступа к данным компонент использует специальные классы записей и столбцов. Он создает однонаправленный курсор, так что перемещение по НД возможно только сверху вниз. Наконец, он лишен многочисленных событий AfterXXXX, BeforeXXXX, а также OnCalcField, так что в НД нельзя создать вычисляемые столбцы или реализовать бизнес-правила на основе обработчиков этих событий. Специфические свойства компонента TIBSQL перечислены в таблице 1.

Таблица 1. Свойства компонента TIBSQL
Свойство Описание
property Bof: Boolean; Содержит True, если курсор стоит перед первой записью НД
property Database: TIBDatabase; Содержит ссылку на связанный компонент TIBDatabase
property DBHandle: PISC_DB_HANDLE; Содержит дескриптор БД
property Eof: Boolean; Содержит True, если курсор стоит после последней записи НД
property FieldIndex [FieldName: String]:Integer; Возвращает индекс столбца по его имени
property Fields [const Idx:Integer]: TIBXSQLVAR; Открывает индексный доступ к столбцам НД в формате TIBXSQLVAR
property GenerateParamNames: Boolean; Если содержит True, компонент создает имена параметров для параметрического запроса
property GoToFirstRecordOnExecute: Boolean; Если содержит True, курсор сразу после открытия НД устанавливается на его первую запись
property Handle: TISC_STMT_HANDLE; Содержит дескриптор запроса
property Open: Boolean; Содержит True, если НД открыт
property ParamCheck: Boolean; Если содержит True, параметры параметрического запроса проверяются перед его выполнением
property Params: TIBXSQLDA; Содержит параметры запроса в формате TIBXSQLDA (см. ниже)
property Plan: String; Содержит план выполнения запроса после его подготовки
property Prepared: Boolean; Содержит True, если запрос был подготовлен методом Prepare
property RecordCount: Integer; Содержит количество записей в запросе
property RowsAffected: Integer; Возвращает количество записей, которые были изменены в результате выполнения запроса
property SQL: TStrings; Содержит текст запроса
property SQLType: TIBSQLTypes read FSQLType; Содержит тип запроса (тип TIBSQLTypes смотри здесь)
property Transaction: TIBTransaction; Содержит ссылку на связанный компонент TIBTransaction
property TRHandle: PISC_TR_HANDLE; Содержит дескриптор транзакции
property UniqueRelationName: String; Используйте это свойство, чтобы указать уникальное реляционное имя для запроса, касающегося одной таблицы

    Тип TIBXSQLVAR содержит практически те же методы приведения типов ASXXXX, как и "обычный" тип TField, а его свойство Value имеет тип Variant. Таким образом, работа со значениями столбцов компонента TIBSQL практически не отличается от работы со значениями столбцов других компонентов-наборов. Это же замечание относится к типу TIBXSQLDA и работе со значениями параметров. Указанные типы поддерживают специфику скоростной работы компонента. Методы компонента TIBSQL перечислены в таблице 2.

Таблица 2. Методы компонента TIBSQL
Метод Описание
procedure Batchinput (InputObject: TIBBatchlnput); Выполняет параметрический запрос для объекта InputОbject
procedure BatchOutput (OutputObject: TIBBatchOutput); Выполняет параметрический запрос для объекта OutputObject
procedure CheckClosed; Возбуждает исключение, если запрос не закрыт
procedure CheckOpen; Возбуждает исключение, если запрос закрыт
procedure CheckValidStatement; Возбуждает исключение, если SQL-предложение ошибочно
procedure Close; Закрывает запрос
function Current: TIBXSQLDA; Возвращает дескриптор текущей записи
procedure ExecQuery; Выполняет запрос
function FieldByName [FieldName: String]: TIBXSQLVAR; Возвращает столбец по его имени
procedure FreeHandle; Освобождает ресурсы InterBase, связанные с запросом
function Next: TIBXSQLDA; Смещает курсор к следующей записи
procedure Prepare; Готовит запрос к выполнению

    Нетрудно обнаружить, что единственным навигационным методом является метод Next. Таким образом, последовательный просмотр записей НД возможен только от начала набора к его концу. Компонент имеет единственное событие, которое возникает при изменении SQL-запроса:

    property OnSQLChanging: TNotifyEvent;

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




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