Query в Delphi

Невизуальный компонент набора данных, выполняющий запросы SQL Страница библиотеки Data Access Класс TQuery

Иерархия TObiect —- TPersistentTComponentTDataSetTBDEData-SetTDBDataSet

Модуль Dbtables

Компонент Query может во многих случаях включаться в приложения вместо Table. Преимущества
Query по сравнению с Table:

  • Возможность формирования набора данных из полей нескольких таблиц базы данных
  • Формирование запросов на языке SQL, что обеспечивает большую гибкость, чем в Table
  • При работе в сети с удаленным сервером (Sybase, SQL Server, Oracle, Infor­mix, DB2, InterBase)

Query более эффективен, поскольку Table создает
на компьютере пользователя временную копию базы данных сервера, что требует больших ресурсов и значительно
загружает сеть. Query размещает на компьютере пользователя только результат запроса.

Основное свойство компонента Query — SQL, имеющее тип TStrings. Это список строк, содержащих запросы
SQL. В процессе проектирования приложения обычно необходимо сформировать в этом свойстве некоторый
предвари­тельный запрос SQL, который показал бы, с какой таблицей или таблицами будет проводиться работа.
Но далее во время выполнения приложения свойство SQL может формироваться программно методами, обычными
для класса TStrings: Clear — очистка, Add — добавление строки и т.д.

Для связи Query с необходимой базой данных служит свойство DatabaseName. В выпадающем списке этого
свойства в Инспекторе Объектов вы можете видеть все доступные BDE псевдонимы баз данных и выбрать
необходимый вам.

После того, как указана база данных, можно устанавливать значение свойства SQL, содержащее запрос.
Этот запрос обычно содержит оператор Select со списком всех полей таблиц и «необходим для настройки
компонента. В дальнейшем он может изменяться во время выполнения.

Соединение с выбранной таблицей базы данных осуществляется свойством Active. По умолчанию оно равно false.
Если установить его в true во время проектирования или программно во время выполнения, то компонент
соединится с базой данных.

Объекты полей, экспонируемых компонентом Query, могут создаваться автоматически.
Но тогда их характеристики (надписи, число отводимых под них символов и т.п.) будут приняты по
умолчанию и вряд ли устроят пользователя. Можно создавать и редактировать объекты полей с помощью
специального Редактора Полей. Вызвать его проще всего двойным щелчком на компоненте Query.

Имеется множество свойств, методов и событий как объектов полей — наследников TField.
так и базовых классов наборов данных, которым наследует Query: TDataSet, TBDEDataSet.
TDBDataSet.

Основные свойства

Свойство Объявление / Описание
Active property Active: Boolean;

Определяет, открыта база данных, или нет.

Constrained property Constrained: Boolean;

Указывает совместимость ограничений в предложении SELECT с операциями
редактирования и вставки записей в таблицах Paradox и dBASE.

Database property Database: TDatabase;

Указатель на связанный с базой данных компонент типа TDatabase. Обеспечивает доступ к его
свойствам и методам. Автоматически устанавливается при открытии базы данных, указанной
свойством DatabaseName.

Database-Name property DatabaseName: String;

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

Свойство Объявление / Описание
DataSource property DataSource: TDataSource;

Указывает компонент DataSource, относящийся к другой, головной таблице, из
которой берется значение ключа, кото­рому должны соответствовать записи данной таблицы.

Local property Local: Boolean;

Определяет, относится ли запрос к локальным таблицам Paradox и dBASE, или к
таблицам SQL и удаленного сервера. Устанавливается автоматически при вызове Prepare.

ParamCheck property ParamCheck: Boolean;

Определяет,должно ли свойство Params автоматически обновляться при изменении
запроса в свойстве SQL во время выполнения.

ParamCount property ParamCount: Word;

Число параметров в свойстве Params.

Params property Params[Index: Word]: TParams;

Массив параметров запроса, содержащегося в SQL.

Prepared property Prepared: Boolean;

Определяет, подготовлен ли запрос к выполнению.Установка в true вызывает метод
Prepare, установка в false — Unprepaге. Но лучше вызывать repare и Unprepare непосредственно.

RequestLive property RequestLive: Boolean;

Позволяет попытаться возвращать результат запроса как «живой» набор
данных, вместо таблицы только для чтения.

Rows-Affected property RowsAffected: Integer;

Возвращает число обновленных или удаленных записей в результате
последнего запроса. Возвращает -1, если запрос не удалось выполнить.

SQL property SQL: TStrings;

Основное свойство компонента, содержащее запрос SQL.

SQLBinary property SQLBinary: PChar;

Используется внутри класса для указания на двоичный, поток запроса
SQL или результата запроса.

StmtHandle property StmtHandle: HDBIStmt;

Идентификатор прямого запроса к Borland Database Engine (BDE).

Text property Text: PChar;

Текст запроса SQL, передаваемый в Borland Database Engine (BDE).

Uni-

Directional

property UniDirectional: Boolean;

Определяет доступность двунаправленного курсора Borland Database Engine (BDE).

Append procedure Append;

Добавляет новую пустую запись в конец набора данных.

AppendRecord procedure AppendRecord(const Values: array of const);

Добавляет в набор данных новую запись, заполняет ее и пересылает в базу данных.

ApplvUpdates procedure ApplyUpdates;

Записывает каптированные изменения в базу данных.

Append procedure Append;

Добавляет новую пустую запись в конец набора данных.

Cancel procedure Cancel;

Отменяет результаты редактирования.

CancelUpdates procedure CancelUpdates;

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

Close procedure Close;

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

CloseDatabase procedure CloseDatabase(Database: TDatabase);

Закрывает соединение с базой данных.

CommitUpdates procedure CommitUpdates;

Очищает буфер каптированных изменений.

Delete procedure Delete;

Удаляет активную запись и позиционирует курсор на следующую запись.

Edit procedure Edit;

Переводит набор данных в режим редактирования. —

ExecSQL procedure ExecSQL;

Выполняет запрос, не связанный с SELECT (запросы INSERT, UPDATE, DELETE, CREATE TABLE).
Для запроса SELECT используется метод Open.

FieldBvName function FieldBvNamefconst FieldName: String): TField:

Находит поле по его имени FieldName. При неверном имени генерирует исключение.

FindField function FindFieldfconst FieldName: string): TField:

Находит поле по его имени. При неверном имени возвра­щает nil.

FindFirst function FindFirst: Boolean;

Перемещает курсор к первой записи и возвращает true в случае успеха.

FindLast function FindLast: Boolean;

Перемещает курсор к последней записи и возвращает true в случае успеха.

FindNext function FindNext: Boolean;

Перемещает курсор к следующей записи и возвращает true в случае успеха.

FindPrior function FindPrior: Boolean;

Перемещает курсор к предыдущей записи и возвращает true в случае успеха.

First procedure First;

Перемещает курсор к первой записи.

GetFieldNames procedure GetFieldNames(List: TStrings);

Выдает список имен всех полей набора данных.

Insert procedure Insert;

Вставляет новую пустую запись в набор данных.

InsertRecord procedure InsertRecord(const Values: array of const);

Вставляет новую заполненную запись в набор данных.

Last procedure Last;

Перемещает курсор к последней записи.

Locate type TLocateOption = (loCaselnsensitive, loPartialKey);

TLocateOptions = set of TLocateOption; function Locate(const KeyFields: string;

const KeyValues: Variant; Options:

TLocateOptions): Boolean;

Осуществляет поиск записи в наборе данных.

Lookup function Lookup(const KeyFields: string; const KeyValues:
Variant; const ResultFields: string): Variant;

Осуществляет поиск записи в наборе данных и возвращает значения указанных полей этой записи.

MoveBv function MoveBy(Distance: Integer): Integer;

Перемещает курсор на заданное число записей.

Next procedure Next;

Перемещает курсор к следующей записи.

Open procedure Open;

Открывает соединение с базой данных и выполняет за­прос SELECT, содержащийся в свойстве
SQL. Для запро­сов иных типов используется метод ExecSQL.

OpenDatabase function OpenDatabase: TDatabase;

Открывает базу данных.

ParaniByName function ParamByName(const Value: String): TParam;

Возвращает объект параметра запроса с указанным именем.

Post procedure Post;

Пересылает отредактированную запись в базу данных.

Prepare procedure Prepare;

Подготавливает BDE и удаленный сервер к выполнению запроса. Подготовка ускоряет
последующую обработку запроса.

Prior procedure Prior;

Перемещает курсор к предыдущей записи.

RevertRecord procedure RevertRecord;

Отменяет исправления текущей записи.

Основные события

Событие Описание
OnUpdateError Наступает при генерировании исключения в процессе пересылки в базу
данных измененной записи.
OnUpdateRecord Наступает при пересылке кэшированной записи в базу данных.
. query делфи
. получение данных из строки sql delphi
Комментирование и размещение ссылок запрещено.