Доступ к записям, изменение данных, поиск, фильтрация. Параметризованные запросы. Визуальные компоненты для отображения данных из БД 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Доступ к записям, изменение данных, поиск, фильтрация. Параметризованные запросы. Визуальные компоненты для отображения данных из БД



 

Доступ к данным и отображение данных рассматривается на примере среды разработки Borland Delphi v.7 и, СУБД Postgres v.8.2 в операционной системе Microsoft Windows XP.

Доступ к данным в среде Borland Delphi 7 может осуществляться с помощью различных технологий. Основными из них являются: BDE (Borland Database Engine), ADO (ActiveX Database Object). Также имеются дополнительные технологии, такие как: dbExpres, InterBase и т.п. Ниже рассматривается доступ по технологии BDE.

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

Доступ к данным можно (условно) разделить на «визуальный» и «невизуальный». В первом случае операции над записями базы данных производятся в основном с помощью специально готовых визуальных компонентов (элементов пользовательского интерфейса) в составе среды разработки. Во втором случае результаты обработки данных могут не иметь такого прямого отражения в пользовательском интерфейсе.

Доступ к записям

Доступ к записям в визуальном режиме (с использованием элементов пользовательского интерфейса) настраивается при создании приложения (см. Компоненты управления доступом к БД).

Доступ к записям в невизуальном режиме основан на использовании объекта типа TDataSet. Этот объект описывает набор (список) записей и позволяет выполнять такие операции над ними, как (слайд 2):

– выборку записей из базы данных;

– фильтрацию записей;

– задание перечня доступных полей (проекция);

– перемещение в начало, конец списка;

– перемещение по записям (на одну вперед, назад, смещение на абсолютное или относительное количество записей);

– чтение данных (доступ к полям записи);

– запись данных (с буферизацией, возможностью отмены изменений);

– добавление записей;

– удаление записей;

– выполнение вспомогательных операций (разного рода проверок, перекодировки данных и т.п.).

Исходными данными для такого набора записей могут быть: таблица базы данных (table), представление (view). Доступ к записям осуществляется в режиме курсора (в каждый момент времени – только к одной записи). Это – аналог механизма курсоров (cursor) языка SQL. Прежде чем обращаться к данным (полям) записи, необходимо переместить к ней курсор.

Поиск, фильтрация записей

Поиск записей осуществляется одним из следующих способов (слайд 3):

– с помощью SQL-запроса;

– специальными методами объекта источника данных (DataSet);

– путем сравнения значений записей.

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

Во втором случае необходимо вызвать методы Locate или Lookup объекта источника данных (DataSet). Оба метода получают на входе список полей и накладываемых ограничений. Первый только перемещает курсор на нужную запись, второй – перемещает курсор и сразу возвращает данные нужной записи.

В третьем случае производится последовательное чтение записей (последовательное перемещение курсора) с проверкой выполнения условий выборки средствами языка программирования.

Фильтрация записей (помимо использования средств языка SQL) производится путем явного задания условий в атрибуте Filter объекта источника данных (DataSet). Условия записываются аналогично выражению в разделе where команды select языка SQL. В выражении можно использовать (слайд 4):

– имена полей;

– значения (символьные числовые и т.п.);

– операторы сравнения (=, <, >, >=, <=, <>);

– скобки (для группировки);

– логические операторы (AND, OR, NOT);

– математические операторы (сложение, вычитание, умножение, деление).

Для активизации фильтра необходимо присвоить атрибуту Filtered значение true.

Изменение данных

Изменение данных средствами языка программирования производится с помощью атрибутов и методов объекта – набора данных (DataSet) по одной записи в следующем порядке (слайд 5):

1. Позиционирование курсора на нужную запись одним из следующих способов:

1.1. С помощью поиска нужно записи (как описано выше).

1.2. Путем перехода по записям (методы First, Last, Next, Prior, MoveBy) с необязательной проверкой дополнительных условий.

2. Чтение данных из поля записи (не обязательно) одним из следующих способов (чтение данных самой записи производится автоматически при перемещении курсора):

2.1. С помощью метода GetFieldData, возвращающего указатель на сами данные (а также с помощью методов GetBlobFieldData и т.п.).

2.2. С помощью атрибута FieldValues (ассоциативный массив[15] данных типа Variant).

2.3. Путем явного обращения к полю. Сначала получение объекта поля (типа TField[16]) с помощью метода FieldByName. Затем чтение данных поля (метод TField.GetData, атрибуты TField.Value, TFiled.AsInteger, TField.AsString и т.п.).

3. Переключение в режим редактирования (путем вызова метода Edit).

4. Запись новых (измененных) данных в поле записи одним из следующих способов:

4.1. Путем присвоения значений атрибуту FieldValues (ассоциативный массив данных типа Variant).

4.2. С помощью метода SetFields (ввод значений всех полей).

4.3. Через объект поля (TField) путем присвоения данных атрибуту TField.NewValue или путем вызова методов TField.SetData или TField.AssignValue.

5. Сохранение изменений. Все изменения, описанные выше, сначала производятся в буфере (оперативной памяти). Для действительной записи изменений в базу данных необходимо вызвать метод UpdateRecord.

Добавление записей производится одним из следующих способов (также через объект DataSet) (слайд 6):

1. Добавление пустой записи с помощью методов Insert или Append (в поля записываются значения по умолчанию или пустые значения).

2. Добавление записи с явной инициализацией значений полей с помощью методов InsertRecord или AppendRecord.

Удаление записи производится путем вызова (также через объект DataSet) метода Delete.

Изменение данных с помощью визуальных компонентов описано ниже.

Изменение данных средствами сервера базы данных производится с помощью команд языка манипулирования данными (слайд 7). Например, в языке SQL основными командами изменения записей служат: update (изменение записи), insert into (добавление записи), delete (удаление записи). Некоторые сервера баз данных позволяют выбирать дисциплину изменения записи (использовать команду update или пару команд delete – insert).

Эти операции выполняются с помощью специального объекта (например, типа TQuery). Формирование SQL-запроса возможно в явном виде или с помощью специального средства SQL Builder, позволяющего упростить написание текста запроса.

Параметризованные запросы (слайд 8)

Параметризованные запросы строятся на основе заранее заданных выражений, в которые подставляются значения параметров в процессе выполнения приложения. Такие запросы удобно показать на примере компонента «выборка» (TQuery). Следует отметить, что запросы не ограничиваются только выборкой данных. Это могут быть любые операции, выразимые средствами языка SQL. Например, можно использовать параметризованные операции добавления записей.

Формирование и выполнение параметризованного запроса выполняется в следующем порядке (на примере компонента «выборка» - TQuery):

1. Указывается имя базы данных (атрибут DatabaseName), с которой будут выполняться операции.

2. Формируется скелет SQL-запроса (если он не создается динамически в процессе выполнения программы):

2.1. Сам текст запроса удобно сформировать с помощью встроенного средства SQL Builder.

2.2. Добавляются параметры (раздел Params) в дереве компонентов (Object TreeView).

3. Производится удаление текста предыдущего SQL-запроса (путем вызова метода Clear атрибута SQL).

4. Формируется SQL-запрос (если он не сформирован изначально на этапе реализации программы):

4.1. Составляется текст запроса (добавление строк в атрибут SQL). Имена параметров задаются после двоеточия. Например, select * from students where fio like:fio. При обработке запроса данные для подстановки в запрос будут браться из параметра fio.

4.2. Вводятся значения параметров (путем присвоения значений атрибуту Params.ParamValues, который представляет собой ассоциативный массив).

5. Вызывается метод Prepare предварительной подготовки запроса. Это делается в целях оптимизации.

6. Запускается выполнение SQL-запроса путем вызова метода ExecSQL.



Поделиться:


Последнее изменение этой страницы: 2021-12-07; просмотров: 52; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.125.7 (0.012 с.)