Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OAP_Vopros_8_Rabota_s_komponentom_TQuery.doc
Скачиваний:
6
Добавлен:
30.04.2015
Размер:
175.62 Кб
Скачать

Методы Prepare a Unprepare

Синтаксис SQL-операторов проверяется только при их выполнении.

Проверка синтаксиса требует времени, что особенно актуально для больших запросов при обращении к удаленным БД. Однако в динамических запросах изменяются только значения параметров, а сам синтаксис хотя бы единожды исполненного SQL-оператора является верным. Поэтому каждый раз выполнять проверку синтаксиса такого оператора не следует. Вместо этого запрос компилируется в исполняемый код и, если текст его не изменялся, а изменялись только значения параметров, проверка Синтаксиса не производятся и происходит немедленное выполнение уже откомпилированного запроса.

Для того чтобы "подготовить" запрос к многократному использованию, следует хотя бы один раз выполнить метод Prepare компонента TQuery:

procedure Prepare;

Выполнение этого метода для динамических запросов с неизменным синтаксисом лучше делать в обработчике события формы OnCreate. В дальнейшем можно многократно присваивать параметрам различные значения и выполнять запрос методами Open и ExecSQL.

Выполнение метода Prepare необязательно в том смысле, что и запрос будет выполнен. Однако выполнение метода Prepare для запросов строго рекомендуется. В противном случае "подготовка" будет производиться всякий раз при выполнении запроса.

Свойство компонента TQuery

property Prepared: Boolean;

возвращает True, если НД был "подготовлен" методом Prepare.

Метод procedure UnPrepare;

позволяет освободить ресурсы, выделенные для "подготовленного" запроса. Этот метод неявно вызывается всякий раз, когда изменяется оператора запроса, что также ведет к немедленному закрытию НД.

Указание значения null для параметров

Значение NULL показывает отсутствие значения в поле или присутствие неопределенного значения. Для числовых полей значение 0 и пустая строка, для строковых полей – это вполне определенные значения, отличные от NULL (значение неопределенное).

Часто при добавлении или корректировки записей (SQL-операторы INSERT, UPDATE) необходимо указать значение NULL для какого-либо параметра. Для этого следует выполнить метод Clear компонента TParam:

procedure Clear;

Передача параметров через свойство DataSource

Для передачи параметров может служить свойство DataSource компонента TQuery:

property DataSource: TDataSource;

В случае использования этого свойства явные присваивания значений параметрам динамического запроса не производятся, то есть не кодируются операторы присваивания типа

Query1.ParamByName(‘ИмяПараметра').Value:=Значение;

В этом случае приложение определяет, имеется ли ссылка на какой-либо компонент TDataSource в свойстве DataSource. Если ссылки нет, возбуждается исключительная ситуация; если есть, то в наборе данных, связанном с TDataSource, отыскиваются поля, одноименные параметрам динамического запроса. Если такие поля есть, их текущие значения берутся в качестве значений параметров: если таких полей нет, возбуждается исключительная ситуация.

Формируемые запросы

Часто один компонент TQuery используют для выполнения различных отстоящих друг от друга во времени запросов. Такой подход уменьшает число используемых компонентов, но может привести к возрастанию программного кода.

Свойство SQL компонента TQuery имеет тип TStrings:

property SQL: TStrings;

потому содержимое свойства SQL может формироваться программно методами Add (добавить элемент), Delete (удалить элемент), Clear (очистить список) и др.

procedure TForm_DinZapr.Button2Click(Sender: TObject);

begin

Query2.Close;

Query2.SQL.Clear;

Query2.SQL.Add(Memo1.Text);

Query2.Open;

end;