Delphi для профессионалов



 

Компонент TIBSQL


Компонент TIBSQL предназначен для быстрого выполнения запросов SQL, поэтому не обеспечивает связи с компонентами представления данных (свойства и методы описаны в табл. 18.6).

Для обеспечения скорости выполнения запроса из компонента удалены все дополнительные механизмы, обслуживающие набор данных. Фактически компонент TIBSQL не имеет отношения к обычным компонентам доступа к данным, его непосредственным предком является класс icomponent, а не TDataSet. Поэтому он только передает через компонент соединения TiBDatabase запрос серверу и получает назад результат выполнения запроса.

Для повышения скорости компонент не обеспечивает полноценной навигации по набору данных. Перемещение по набору данных возможно только в прямом направлении (однонаправленный курсор).

Возвращаемые набором данных текущие значения полей содержатся не в привычном наборе объектов полей TField, а в объекте TIBXSQLDA (см. выше). Так как структура XSQLDA создается сервером при выполнении запроса, существенно уменьшается время открытия набора данных компонента.

Таблица 18.6. Свойства и методы компонента TIBSQL

Объявление

Тип

Описание

Свойства

property Bof: Boolean;

Pu

Значение True говорит о том, что курсор находится в начале набора данных

property Database: TiBDatabase;

Pb

Определяет компонент соединения с базой данных

property DBHandle: PISC DB_HANDLE;

Pu

Указатель API на объект базы данных

property Eof : Boolean;

Pu

Значение True говорит о том, что курсор находится в конце набора данных

property Fieldlndex: [FieldName: String]: Integer;

Pu

Список порядковых номеров полей по их именам

property Fields [const Idx: Integer] : TIBXSQLVAR;

Pu

Индексированный список структур XSQLVAR, хранящих значения полей набора данных

property GenerateParamNames : Boolean;

Pu

Установка свойства в значение True приводит к созданию списка имен параметров запроса в свойстве Params

property GoToFirstRecordOnExecute : Boolean;

Pb

Значение True обеспечивает установку курсора на первую запись набора данных при его открытии

property Handle: TISC STMT HANDLE;

Pu

Содержит указатель API на запрос

property Open: Boolean;

Pu

Позволяет определить, открыт ли набор данных

property ParamCheck: Boolean;

Pb

Позволяет определить, был ли заново сгенерирован список параметров запроса при изменении его текста во время выполнения

property Params: TIBXSQLDA;

PU

Область дескрипторов запроса (см. выше)

property Plan: String;

Pu

Содержит план запроса после его  подготовки

property Prepared: Boolean;

Pu

Значение True сообщает о том, что запрос готов к выполнению

property RecordCount: Integer;

Pu

Возвращает число записей набора данных

property RowsAf fected: Integer;

Pu

Возвращает число записей, обработанных запросом

property SQL: TStrings;

Pb

Содержит текст запроса

property SQLType: TIBSQLTypes read FSQLType;

Pu

Возвращает тип запроса (см. табл. 24.5)

property Transaction: TIBTransaction;

Pb

Указывает на компонент транзакции

property TRHandle: PISC_TR_HANDLE;

Pu

Содержит указатель API на транзакцию, в которой работает запрос

property UniqueRelationName : String;

Pu

Возвращает уникальное внутреннее имя запроса

Методы

procedure Batchlnput ( InputOb ect: TIBBatchlnput);

Pu

Выполняет запрос с параметрами для переноса в объект Inputobject

procedure BatchOutput (Output Object : TIBBatchOutput) ;

Pu

Выполняет запрос с параметрами для переноса в объект OutputObject

function Call (ErrCode: ISC_STATUS; RaiseError: Boolean): ISC STATUS;

Pu

Возвращает текст сообщения об ошибке по ее коду ErrCode

procedure CheckClosed;

Pu

Вызывает исключение, если набор данных открыт

procedure CheckOpen;

Pu

Вызывает исключение, если набор данных закрыт

procedure CheckValidStatement;

Pu

Вызывает исключение, если запрос некорректен

procedure Close;

Pu

Закрывает набор данных

function Current: TIBXSQLDA;

Pu

Ссылка на область дескрипторов запроса

procedure ExecQuery;

Pu

Выполняет запрос

function FieldByName [FieldName: String]: TIBXSQLVAR;

Pu

Возвращает структуру XSQLVAR по имени поля

procedure FreeHandle;

Pu

Освобождает ресурсы, занятые запросом

function Next: TIBXSQLDA;

Pu

Возвращает область дескрипторов для следующей записи

procedure Prepare;

Pu

Готовит запрос к выполнению

Методы-обработчики событий

property OnSQLChanging: TNotifyEvent;

Pb

Вызывается при изменении запроса

Текст запроса задается обычным для всех компонентов запросов свойством SQL. Для выполнения запроса используется также знакомое свойство EXGCSQL. После этого можно обращаться к созданному компонентом набору данных. Значения полей из текущей записи доступны через свойство Fields. Обратите внимание, что это не объекты типа TFields, а структуры XSQLVAR из области дескрипторов.

Будут ли переданы значения полей в компонент, зависит от значения свойства GoToFirstRecordOnExecute.

Доступ к области дескрипторов осуществляется через свойство Current.

Переход к следующей записи выполняется методом Next. При этом обновляется область дескрипторов запроса.