Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Структура DB-Aware компонентов
Компоненты, работающие с данными, часто называют DB-Aware-компонентами (далее DB-A). Их отличительной особенностью является возможность подключения к какой-либо части базы данных, скажем, к таблице или отдельному полю. Создание компонентов для работы с данными не является сложной задачей. В отличие от других категорий компонентов, DB-A не имеют единой иерархии классов. Процесс создания таких компонентов может быть определен как преобразование какого-либо элемента управления в элемент управления, работающий с данными.
Для осуществления этого преобразования необходимо всего лишь включить в имеющийся класс компонента дополнительное поле и написать несколько методов, обеспечивающих связь между компонентом и набором данных.
Другими словами, чтобы создать DB-A, нужно подобрать наиболее соответствующий нашим требованиям компонент, после чего описать поведенческую модель связки компонент-данные. Необходимо заметить, что никаких особенных требований к имеющемуся компоненту не предъявляется, это может быть графический или оконный элемент управления, невизуальный компонент, диалог и так далее.
В зависимости от возможностей DB-A можно условно разделить на две категории: компоненты, только отображающие данные компоненты, способные модифицировать наборы данных.
Естественно, что первый тип компонентов устроен проще, чем второй. В общем случае схема построения компонентов, работающих с данными, может быть представлена следующим образом (рисунок 1):
Класс TDataLink
Класс TDataLink является базовым классом для иерархии классов связи с БД. Класс обеспечивает коммуникационный канал для чтения/записи в БД.
Данный класс описан в модуле DB
(Его свойства по ссылке выше есть, но я не думаю что это понадобится, но на всякий случай)
Способ построения отчётов с использованием вывода информации в HTML. http://win-ni.ru/db/lab8_1.html http://window.edu.ru/window_catalog/pdf2txt?p_id=9223&p_page=1
Это информация по SQL запросу взята со второй ссылки
При работе с БД широко применяется понятие запроса к ней. Под запросом понимается требование совершить определенное действие с информацией из БД. Можно выбрать данные в соответствии с заданным
условием и отобразить результат – запрос на выборку. Можно также вставить, удалить, обновить определенные записи в БД, используя соответствующие запросы. Такие требования формируются на специальных языках программирования QBE и SQL. SQL нашел более широкое распространение, в Delphi его можно использовать при создании приложения для работы с БД. SQL-запрос На языке SQL можно создать запросы различных типов: запрос на выборку данных; запрос на добавление; запрос на обновление; запрос на удаление. SQL-запрос, созданный с помощью DBD, помещается в файл с расширением sql. Каждый запрос на языке SQL состоит из нескольких частей, которые начинаются с определенного зарезервированного слова. При записи запросов можно использовать как прописные, так и строчные буквы. Информацию можно разбивать на строки произвольным образом, но желательно в отдельные строки помещать информацию, имеющую определенное смысловое назначение. Для разделения отдельных зарезервированных слов, идентификаторов, чисел, строк, знаков операций и т.д. следует использовать пробелы. Запрос на выборку. Он предназначен для извлечения данных, находящихся в определенных полях одной или нескольких таблиц и соответствующих задаваемым условиям. Конструкция запроса следующая: SELECT [DISTINCT] <список выводимых полей> FROM <список используемых таблиц> [WHERE <условие отбора>] [ORDER BY <порядок сортировки>] [GROUP BY <порядок группировки>] [HAVING <условие отбора групп>] [UNION <объединяемый запрос на выборку>] Рассмотрим подробнее отдельные части запроса. DESTINCT – указывает, что в результате запроса не должно быть повторяющихся значений. <список выводимых полей>: [<таблица>.]<поле>[AS <псевдоним>]{,[<таблица>.]<поле>[AS <псевдоним>]}, где таблица – имя таблицы, если в запросе присутствует только одна таблица, его можно опустить; поле – имя поля; псевдоним – псевдоним для имени поля является локальным в запросе; AS – оператор, ставящий в соответствие конкретному полю псевдоним. Если требуется получить данные из всех полей таблицы, то достаточно указать * вместо
перечисления всех имен полей. <список используемых таблиц>: “<файл с таблицей>” [<псевдоним>]{,”<файл с таблицей>”[<псевдоним>]}. WHERE – зарезервированное слово, с которого начинается оператор задания условий. <условие отбора>: Условие, устанавливающее объединение: [(<таблицаM.поле1> <условие> <таблицаN.поле2>)]{AND|OR (<таблицаI.поле1> <условие> <таблицаJ.поле2>)}, где таблицаM, таблицаN, таблицаI, таблицаJ – имена объединяемых таблиц; поле1, поле2 – имена полей в этих таблицах, по соответствию значений которых устанавливается взаимосвязь таблиц; условие – определяет соответствие значений в заданных полях двух таблиц, например: равенство, больше, меньше, не равно и другие операции сравнения; условий может быть несколько, в этом случае они объединяются при помощи круглых скобок и логических операций AND и OR. Если условие для объединения отсутствует, формируется результат, представляющий собой всевозможные объединения записей всех таблиц. Условие на значение полей: [[<таблица>.]<поле> <условие> <значение>] {AND|OR [<таблица>.]<поле> <условие> <значение>}. Помимо математических, используются также логические операторы сравнения, предикаты IN, LIKE и другие. ORDER BY – зарезервированное слово, с которого начинается оператор задания порядка сортировки. <порядок группировки>: [<таблица>.]<поле> {,[<таблица>.]<поле>}. Запрос на добавление. Этот запрос позволяет добавить запись в таблицу и присвоить значения ее полям. Конструкция запроса следующая: INSERT INTO “<файл с таблицей>” (<поле>{,<поле>}) VALUES (<значение>{,<значение>}). Рассмотрим подробнее отдельные части запроса: файл с таблицей – имя файла с таблицей, в которую добавляется запись; должен быть с расширением и содержать путь; поле – имя поля, которому задается значение. VALUES - зарезервированное слово, с которого начинается оператор задания списка значений полям таблицы; значение – значение из списка значений, которое задается соответствующему полю новой записи (их количество должно равняться числу полей). 3. Запрос на обновление. Этот запрос позволяет обновить значения в записях, которые соответствуют задаваемым условиям. Конструкция запроса следующая: UPDATE “<файл с таблицей>” SET <поле> = <значение>{, <поле> = <значение>} [WHERE <условие отбора>] Рассмотрим некоторые части запроса: SET – зарезервированное слово, с которого начинается оператор, задающий список подставляемых значений; <поле> = <значение>{, <поле> = <значение>} – список полей и значений, которые задаются этим полям. [WHERE <условие отбора>] – оператор, задающий условие отбора тех записей, в которых следует обновить данные. Запрос на удаление. Этот запрос позволяет удалить из таблицы записи, удовлетворяющие заданным условиям. Конструкция запроса следующая: DELETE FROM «<файл с таблицей>» [WHERE <условие отбора>]. Запрос к БД (Query) Использование одной компоненты Table позволяет работать только с одной таблицей. Поэтому, когда необходимо работать с несколькими связанными таблицами, нужно создавать соответствующее число компонент Table. В этом случае целесообразно взять компоненту Query класса TQuery,
являющегося потомком класса TDBDataSet. Эта компонента позволяет определить набор данных на основе нескольких таблиц с помощью SQL - запроса. Ее также удобно применять, когда таблица БД чрезмерно велика; в этом случае с помощью запроса можно ограничить набор рассматриваемых данных. Использование этой компоненты связано со знанием языка SQL. Отметим сразу, что можно создать оператор Delphi SQL при помощи компоненты Query следующим образом: 1) поместить на форму объекты Query, DataSource и связать их вместе; 2) присвоить псевдоним объекта TQuery свойству DataBaseName; 3) с помощью свойства SQL ввести указание SQL; 3) установить свойство Active в значение True. Если каждый шаг был завершен правильно и если BDE установлено корректно, сетка должна будет содержать записи из указанной таблицы. Delphi позволяет создавать SQL -запросы к БД как статические, в которых текст запроса остается неизменным, так и динамические (или запросы с параметрами). Динамические SQL -запросы содержат параметры, определенные в условиях отбора записей, которые в процессе выполнения программы могут изменяться. Таким образом, с помощью одного динамического запроса можно получать различные результаты при выполнении приложения. Синтаксическая конструкция динамических запросов аналогична статическим, за исключением того, что у них в секции, определяющей условия отбора записи, вместо значения записывается <параметр>, где параметр – имя параметра, вместо которого при выполнении приложения будет подставляться значение. У класса TQuery отметим следующие наиболее важные свойства, которые он добавляет к наследуемым от классов TDataSet, TBDEDataSet и TDBDataSet: Local – определяет расположение таблиц (True – локальные таблицы, False – таблицы на SQL -сервере); свойство только для чтения. RequestLive – свойство логического типа (по умолчанию имеет значение False), определяет возможность изменять набор данных, полученный в результате выполнения запроса. Эта возможность имеется, если свойство имеет значение True, и у запросов, которые основаны на одной таблице и не используют сортировку и агрегатные функции. У остальных запросов результат доступен только для чтения независимо от значения данного свойства. В этих случаях можно посмотреть свойство CanModify для того чтобы увидеть, успешен ли запрос, если же нужно откорректировать таблицу с помощью запроса SQL, то следует использовать команду SQL Update.
SQL – свойство типа TStrings, определяет текст SQL -запроса, который используется при выполнении методов Open или ExecSQL. UniDirectional – определяет направление перемещения курсора по набору данных, полученному в результате выполнения запроса. UpdateMode – свойство типа TUpdateMode, определяет способ обновления записей из промежуточного буфера. Следующие свойства компоненты TQuery используются в динамических SQL -запросах. Приведем некоторые из них: DataSource – свойство типа TDataSource, определяет источник данных, значения полей которого используются как параметры для динамического запроса. Params[Index] – свойство типа TParams, задает список элементов типа TParams, которые определяют параметры в динамическом запросе. С помощью этого свойства в редакторе значений параметров задаются начальные величины параметров. Чтобы перейти к редактору значений параметров запроса, нужно активизировать мышью значение этого свойства. Класс TQuery добавляет к наследуемым от классов TDataSet, TBDEDataSet и TDBDataSet следующие методы (некоторые из них): ExecSQL – процедура выполняет SQL -запрос. Prepare – процедура посылает запрос в BDE для проверки синтаксиса и оптимизации. Рекомендуется выполнять для динамических запросов. События, которые обрабатываются компонентой TQuery, полностью наследуются от класса TDataSet. При подстановке переменных связи в динамический запрос программным методом с помощью свойства Params выполняются обычно следующие шаги: 1) необходимо убедиться в том, что таблица закрыта; 2) подготавливается объект TQuery с помощью выдачи команды Prepare; 3) Свойству Params присваиваются конкректные значения; 4) Открывается запрос. Пример № 1. Создание запроса для вывода записей, имеющих фамилию,
|
||||||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 232; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.172.252 (0.059 с.) |