Любое приложение баз данных должно уметь выполнять
как минимум две операции. Во-первых, иметь информацию о местонахождении базы
данных, подключаться к ней и считывать имеющуюся в таблицах БД информацию. Эта
функция в значительной степени зависит от реализации конкретной технологии доступа
к данным.
Во-вторых, обеспечивать представление и редактирование
полученных данных. Множество записей одной или нескольких таблиц, переданные
в приложение в результате активизации компонента доступа к данным, будем называть
набором данных. Понятно, что в объектно-ориентированной среде для представления
какой-либо группы записей приложение должно использовать возможности некоторого
класса. Этот класс должен инкапсулировать набор данных и обладать методами для
управления записями и полями.
Таким образом, сам набор данных и класс набора
данных является той осью, вокруг которой вращается любая деятельность приложения
баз данных.
Пользователь просматривает на экране данные
— это результат использования набора данных.
Пользователь решил изменить какое-то число —
он изменит содержимое ячейки набора данных.
При закрытии приложение сохраняет все изменения
— это набор данных передается в базу данных для сохранения.
При этом, используя одни базовые функции для
обслуживания набора данных, компоненты должны обеспечивать доступ к данным в
рамках различных технологий. Поэтому не удивительно, что разработчики VCL уделили
особое внимание созданию максимально эффективной иерархии классов, обеспечивающих
использование наборов данных (рис. 12.1).
Класс TDataset является базовым классом иерархии,
он инкапсулирует абстрактный набор данных и реализует максимально общие методы
работы с ним. В него можно передать записи из таблицы базы данных или строки
из обычного текстового файла — набор данных будет функционировать одинаково
хорошо.
Рис. 12.1. Иерархия классов,
обеспечивающих функционирование набора данных
На основе базового класса реализованы специальные компоненты VCL для различных
технологий доступа к данным, которые позволяют разработчику конструировать приложения
баз данных, используя одни и те же приемы и настраивая одинаковые свойства.
В этой главе рассматриваются следующие вопросы:
набор данных, инкапсулированный в классе
TDataSet;
что такое состояния набора данных;
индексы, поля, параметры;
прототипы компонентов для работы с таблицами,
запросами и хранимыми процедурами;
основные механизмы набора данных, реализованные
в классе TDataSet.
Знаете ли Вы, почему "черные дыры" - фикция? Согласно релятивистской мифологии, "чёрная дыра - это область в пространстве-времени, гравитационное притяжение которой настолько велико, что покинуть её не могут даже объекты, движущиеся со скоростью света (в том числе и кванты самого света). Граница этой области называется горизонтом событий, а её характерный размер - гравитационным радиусом. В простейшем случае сферически симметричной чёрной дыры он равен радиусу Шварцшильда". На самом деле миф о черных дырах есть порождение мифа о фотоне - пушечном ядре. Этот миф родился еще в античные времена. Математическое развитие он получил в трудах Исаака Ньютона в виде корпускулярной теории света. Корпускуле света приписывалась масса. Из этого следовало, что при высоких ускорениях свободного падения возможен поворот траектории луча света вспять, по параболе, как это происходит с пушечным ядром в гравитационном поле Земли. Отсюда родились сказки о "радиусе Шварцшильда", "черных дырах Хокинга" и прочих безудержных фантазиях пропагандистов релятивизма. Впрочем, эти сказки несколько древнее. В 1795 году математик Пьер Симон Лаплас писал: "Если бы диаметр светящейся звезды с той же плотностью, что и Земля, в 250 раз превосходил бы диаметр Солнца, то вследствие притяжения звезды ни один из испущенных ею лучей не смог бы дойти до нас; следовательно, не исключено, что самые большие из светящихся тел по этой причине являются невидимыми." [цитата по Брагинский В.Б., Полнарёв А. Г. Удивительная гравитация. - М., Наука, 1985] Однако, как выяснилось в 20-м веке, фотон не обладает массой и не может взаимодействовать с гравитационным полем как весомое вещество. Фотон - это квантованная электромагнитная волна, то есть даже не объект, а процесс. А процессы не могут иметь веса, так как они не являются вещественными объектами. Это всего-лишь движение некоторой среды. (сравните с аналогами: движение воды, движение воздуха, колебания почвы). Подробнее читайте в FAQ по эфирной физике.