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