Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа7.doc
Скачиваний:
6
Добавлен:
06.11.2018
Размер:
461.82 Кб
Скачать
    1. Компонент Query

Компонент Query представляет собой набор данных, записи которого формируются в результате выполнения SQL-запроса и основаны на реляционном способе доступа к данным, поэтому при работе с удаленными БД рекомендуется использовать именно его. Основным достоинством реляционного доступа является небольшая загрузка сети, поскольку передаются только запросы и результат их выполнения. Применительно к локальным БД использование реляционного подхода не дает существенного преимущества, но и в этом случае с помощью SQL-запроса можно выполнить некоторые действия неприменимые с набором данных Table. В то же время Query поддерживает и навигационные способы доступа, рассмотренные выше (методы Next, Insert…).

Наборы данных Query также могут находиться в открытом (Active:=True) и закрытом (Active:=False) состояниях. И на расположение БД (каталог или псевдоним) также указывает свойство компонент DatabaseName.

Открытый компонент Query содержит набор данных, соответствующий выполнению SQL-запроса SELECT, содержащегося в свойстве SQL этого компонента. Компонент Query позволяет также выполнять и другие SQL-запросы. Но для них набор данных открывать не нужно, а нужно вызывать процедуру ExecSQL.

Пример использования SQL-запроса для открытия таблицы NewTable.db:

procedure TForm1.Button1Click(Sender: TObject);

begin

Query1.Active:=False;

Query1.SQL.Clear;

Query1.SQL.Add('SELECT * FROM NewTable.db');

Query1.Active:=True;

end;

В отличие от компонента Table, набор данных Query может включать в себя записи более одной таблицы БД. Текст запроса содержится в свойстве SQL и включает в себя команды на языке SQL. Выполняется запрос либо при открытии набора данных (SQL-команда SELECT), либо вызовом метода ExecSQL (для остальных SQL-команд). Если в тексте SQL-запроса есть ошибки, то при попытке выполнения запроса генерируется сообщение об ошибке.

Компонент Query может быть связан с таблицей БД или напрямую, или содержать копии отобранных записей таблицы (по умолчанию). Если требуется возможность редактирования записей (нужно связать напрямую), то для этого требуется:

  1. чтобы данные в запросе отбирались только из одной таблицы;

  2. чтобы в запросе не использовались соединения таблиц, вложенные запросы, группирование данных, операнд DISTINCT и агрегатные (статистические) функции;

  3. чтобы сортировка шла только по индексным полям;

  4. чтобы таблица допускала модификацию;

  5. установить свойству RequestLive:=True.

Далее рассмотрим синтаксис языка SQL.

Язык SQL ориентирован на выполнение действий с таблицами БД. В отличие от процедурных языков программирования, в нем нет операторов управления вычислительным процессом (циклов, ветвлений) и средств ввода-вывода. В качестве результата выполнения SQL-запроса может возвращаться набор данных, который называют результирующим набором.

SQL-операторы определения данных (создание/удаление таблицы или индекса) были рассмотрены на втором уроке.

В дальнейшем при описании операторов языка в [квадратных скобках] указаны необязательные параметры, в <треугольных скобках> описываются отдельные элементы, в {фигурных скобках} | - разделяет допустимые значения из которых нужно выбрать лишь одно.