Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 363; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.11 (0.007 с.) |