ЗАДАНИЕ XXVII
Тема: Работа с базами данных Цель: Краткое знакомство с инструментарием для работы с базами данных в среде Stratum Computer. |
Перед началом работы необходимо:
владеть работой с клавиатурой и мышкой; | |
владеть основными приемами работы в системе Stratum. | |
владеть языком запросов к базам данных SQL |
Основные понятия
Обработка баз данных построена на использовании
BDE (Borland Database Engine) фирмы BORLAND. Поэтому работа с
базами данных возможна только при установленном
BDE. При его отсутствии STRATUM будет функционировать
нормально, но без поддержки баз данных (Проекты,
использующие базы, работать не будут). Базы данных и таблицы
В таблицах хранится информация по темам, например данные о заказчиках, или о закупках, или о производстве. Таблицы состоят из строк и столбцов. Набор информации в каждой строке называется записью. Все значения в столбце имеют один и тот же тип данных. При работе с такой таблицей приняты следующие понятия:
Таблицы,
используемые в приложении, включаются в базу
данных. База данных обычно содержит несколько
таблиц, а также индексы и другие информационные
объекты. Одновременно может существовать
несколько баз данных. Функции для работы с базой данных Перед началом работы с
базой данных необходима операция открытия DbOpenBase.
При открытии задается тип базы (например ORACLE, SYBASE
и др.), пароль, если доступ к базе данных
ограничен, и режим доступа
(чтение/модифицирование,
разделенный/эксклюзивный режим использования). Имидж, осуществляющий открытие базы (реализует функцию DbOpenBase) выглядит следующим образом.
Функции для работы с таблицами Таблицу можно создать с
помощью функции DbCreateTable, или через SQL запрос. Стандартные имиджи для работы с таблицами следующие.
Когда в проекте открыта таблица в режиме просмотра и редактирования, то в среде Stratum инициализируется панель инструментов для работы с таблицей. Выглядит она следующим образом.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Задание 1
Собрать проект в котором открывается таблица для просмотра и редактирования.
Создайте новый проект. Для начала нужно открыть базу данных. Необходимо вставить в схему имидж из библиотеки Unit - BaseOpen. Для открытия таблицы нужно поставить имидж из библиотеки Unit - Table. Имиджу Table для открытия таблици нужен дескриптор на открытую базу данных HBase. Эту переменную надо передать по связи от имиджа BaseOpen. В имидже Table надо установить переменную Name, так если задать имя файла таблицы на диске. Для просмотра и редактирования таблицы необходимо установить в схеме имидж TableEdit. Передайте по связе от имиджа Table переменную HTable имиджу TableEdit. Переменную _enable в имидже TableEdit установите в 1. После всех этих действий запускайте схему (можно пошагово) и тогда откроется таблица и инициализируется панель с инструментами для работы с базами данных.
Задание 2
Собрать проект в котором открывается таблица, затем к таблице выполняется SQL запрос и результирующая таблица открывается для просмотра.
Для выполнения этого задания используйте предыдущий проект как шаблон. Удалите связь между имиджами Table и TableEdit. Создайте новый имидж. В нём мы будем выполнять SQL запрос. Для выполнения SQL запроса в среде Stratum существует функция DbSQL. Ей как параметры необходимы: дескриптор на открытую базу в которой находится необходимая нам таблица, затем команда SQL запроса и тип запроса (в данном случае тип 2 - SQL). Для SQL - команды необходимо указать имя таблицы на диске, его мы возьмём из имиджа Table. Объявим переменные в новом имидже.
HANDLE HBase, HTableRez
//дескрипторы на базу и на новую таблицу
STRING str,name // строка для
хранения команды SQL и имя таблицы
FLOAT rez //служебная
переменная
Переменную HBase возьмём по связи с имиджа BaseOpen. Переменную Name по связи из имиджа Table. Напишем модель запроса.
rez:=DbSetDir(~HBase,"($project)")
// устанавливаем текущую директорию (директория
проекта, где лежит файл нашей таблицы).
str := "SELECT * FROM "+~name+"
WHERE dohod > 0" // пишем SQL запрос, выбрать все
записи из таблицы с именем Name, в которых поле DOHOD
больше 0.
HTableRez := DbSQL(~HBase,~str,2) //
выполняем SQL запрос и получаем дескриптор на
новую таблицу, сформировавшуюся по SQL запросу.
Для просмотра данной
таблицы свяжем переменную HTableRez
cвязью с переменной HTable имиджа TableEdit.
После этого запустите проект.
В результате у вас должна получится следующая схема. |
Примечание. Запрос построен для конкретной таблицы, если
у вас будет другая таблица, то запрос будет выглядеть другим образом (в поле
where будет стоять другое условие).
Исходные тексты работы можно взять здесь.
Дополнительные задания
Создайте проект, который бы при помощи SQL запроса связывал несколько таблиц. | |
Создайте проект, в котором бы выполнялись SQL запросы к связанным таблицам. |