Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 Практический раздел.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.18 Mб
Скачать

Лабораторная работа №21

Тема: Использование компонента Query

Цель работы: Изучить использование компонента Query при работе с БД в Delphi.

Время работы: 2 учебных часа.

Правила по ТБ: Общие.

Оборудование рабочего места: Практикум, ПК.

Программное обеспечение: Windows, MS Office, Delphi

Вопросы входного контроля:

    1. Расскажите о работе компонента Table,

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

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

  3. Расскажите о методе AsInteger и какие варианты аналогичных методов есть у класса Table.

  4. Расскажите о методе Next First и какие варианты аналогичных методов есть у класса Table.

  5. Опишите, как определить количество записей у базы данных не просматривая ее

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Компоненты Delphi, обеспечивающие доступ к БД

Имеются несколько основных компонентов (объектов), которые используют постоянно для доступа к БД. Эти объекты могут быть разделены на три группы:

  • 1.Невизуальные: Table, Query, TDataSet, TField

  • 2.Визуальные: DBGrid, DBNavigator, DBEdit, DBMemo.

  • 3. Связующие: TDataSource

Первая группа включает невизуальные классы, которые используются для управления таблицами и запросами. Эта группа сосредотачивается вокруг компонент типа Table, Query, и классами TDataSet и TField. В Палитре компонент они расположены на странице Data Access и BDE.

Вторая группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа DBGrid, DBNavigator, DBEdit, DBMemo, DBImage и DBComboBox. В Палитре Компонентов они расположены на странице Data Controls.

Имеется и третий тип классов, который используется для того, чтобы связать предыдущие два типа объектов. К 3 типу относится только невизуальный компонент DataSource.

При организации работы с БД следует иметь в виду определенный порядок связи между этими компонентами и БД:

БД <-> BDE <-> Невизуальный компонент <-> Связующий компонент <-> Визуальный компонент.

В Delphi имеется специальный компонент набора данных — Query, являющийся аналогом Table, но позволяющий работать с SQL. Общие правила синтаксиса SQL очень просты. Язык SQL не чувствителен к регистру.

Для подключения БД откройте новое приложение Delphii, перенесите на форму компонент Query со страни­цы библиотеки Data Access (BDE) и установите его свойство DatabaseName равным имени созданной вами базы данных (Student). Поместите на форму компонент DataSource со страницы Доступ к данным (Data Access). Его свойству Name соответствует Datasource1, а свойству DataSet задайте Queryl. Поместите также на форму компонент DBGrid (Управление данными – Data Control) и в его свойстве DataSource задайте DataSourcel.

Теперь ваше тестовое приложение для экспериментов с языком SQL готово. Операторы SQL можем писать в свойстве SQL компонента Queryl, а чтобы увидеть результаты выполнения написанного оператора, надо будет устанавливать значение свойства Active компонента Queryl в true. Это надо будет делать после записи каждого нового оператора.

Особенности набора данных Query

Компонент Query представляет собой набор данных, записи которого формируются в результате выполнения SQL-запроса. Набор данных, возвращаемый компонентом Query, основан на реляционном способе доступа к данным. При работе с удаленными БД следует применять именно набор данных Query.

В отличие от компонента Tаblе, набор данных Query может включать в себя записи более чем одной таблицы БД.

Текст запроса, на основании которого в набор данных отбираются записи, содержится в свойстве SQL типа Tstrings. Запрос включает в себя команды на языке SQL и выполняется при открытии набора данных. Запрос также называют SQL-запросом или SQL-программой.

При формировании запроса на этапе разработки приложения можно использовать текстовый редактор (рис. 2.5), вызываемый через Инспектор объектов двойным щелчком кнопки мыши при размещении указателя на поле значения свойства SQL.

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

Пример. Приложение — редактор SQL-запросов.

Рассмотрим приложение — простейший редактор, позволяющий подготавливать и выполнять SQL-запросы. Кроме визуальных компонентов форма содержит два компонента доступа к данным Query1 и DataSource1, которые при выполнении приложения на экране не видны.

Редактирование SQL-запроса осуществляется с помощью элемента Memo1. Набранный в поле ввода запрос выполняется при нажатии кнопки Button1 с заголовком Выполнить. Результат выполнения запроса отображается в компоненте DBGrid1.

При наличии в тексте SQL-запроса ошибки генерируется исключительная ситуация и выдается сообщение об ошибке, а результат запроса оказывается не определен. При этом набор данных Query1 автоматически закрывается.

Значения свойств DataSet источника данных DataSource1 И DataSource сетки DBGrid1, с помощью которых организуется взаимодействие компонентов Query1, DataSource1 И DBGrid1, устанавливаются при создании формы. В последующих примерах приложений значения этих свойств задаются через Инспектор объектов, и соответствующие операторы, присваивающие свойствам необходимые значения, в модуле формы отсутствуют.

Ниже приведен код модуля uSQLEdit формы Form1 приложения.

unit uSQLEdit;;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls, Grids, DBGrids, Db, DBTables; 

Type

TForm1 = class (TForm) 

Memo1: TMemo; 

DataSource1: TDataSource; 

Query1: TQuery;

DBGrid1: TDBGrid; 

Button1: TButton; 

Label1: TLabel; 

Label2: TLabel;

procedure FormCreate (Sender: TObject);

procedure Button1Click (Sender: TObject); 

private

{ Private declarations } 

Public

{ Public declarations }

end;

var

Form1: TForml;

implementation 

{$R *.DFM}

procedure TForml.FormCreate (Sender: TObject); 

begin

DataSourcel.DataSet := Queryl;

DBGridl.DataSource := DataSourcel;

end;

procedure TForml.ButtonlClick (Sender: TObject);

begin

Queryl.Close;

Queryl.SQL.Assign (Memol.Lines);

Query1.Open;

end; 

end.

В приведенном примере метод Assign выполняет присваивание одного объекта другому, при этом объекты должны иметь совместимые типы. Применительно к списку строк (класс Tstrings), которому принадлежат свойства SQL компонента Query1 и Lines компонента Memo1, подобное присваивание означает копирование информации из одного списка в другой с заменой содержимого последнего. Если размеры списков (число элементов) не совпадают, то после замены количество элементов заменяемого списка становится равным числу элементов копируемого списка.

Компонент Query обеспечивает выполнение SQL-запроса и является набором данных, который образуется на основе этого запроса. Формирование набора данных осуществляется при активизации компонента Query вызовом метода open или заданием свойству Active значения True. В ряде случаев при выполнении SQL-запроса в получении набора данных нет необходимости, например, при удалении, вставке или модификации записей (средствами языка SQL). В этом случае предпочтительнее выполнять запрос компонента Query не его открытием, а вызовом метода ExecSQL. При работе в сети метод ExecSQL обеспечивает требуемую модификацию набора данных, не передавая в вызывающее приложение (компьютер) записи набора данных, что заметно снижает нагрузку на сеть.

Для локальных БД вместо компонента Table также можно использовать компонент Query. Если присвоить свойству SQL значение "SELECT * FROM NameTableBD", а свойству RequestLive константу True, то набор данных Query будет похож на набор данных Table. В приведенном значении NameTableBD является именем таблицы БД, которое для компонента Table задается в свойстве Tаblеnаmе. Однако набор данных Query не имеет системы индексов, в отличие от набора данных Table, поэтому к Query неприменимы методы, опирающиеся на индексацию.

СОДЕРЖАНИЕ И ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

    1. Изучить теоретические сведения.

  1. Создть новый проект.

  2. Подключить таблицу (Созданную вами) с помощью Query, создать интерфейс для отображения ее данных с использованием сетки строк, строку для ввода ключа поиска, кнопки для реализации параметрического и динамического запроса к БД.

  3. Проверить работу всего проекта.

  4. Реализовать с помощью SQL статический запрос на языке SQL.

  5. Реализовать с помощью SQL Monitor статический запрос на языке SQL.

  6. Реализовать параметрический запрос на языке SQL.

  7. Продемонстрировать преподавателю работу разработанного образца проекта.

  8. Получить от преподавателя индивидуальное задание и создать проект (по аналогии) для выполнения индивидуального задания.

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

Вопросы выходного контроля:

  1. Расскажите о работе с компонентов Query, при подключении БД.

  2. Назовите отличия при использовании Table и Query.

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

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

  5. Расскажите, какие невизуальные компоненты доступа к БД вы знаете.

  6. Расскажите, какие визуальные компоненты доступа к БД вы знаете.