Компонент 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. При этом обновляется область дескрипторов запроса.