“Работающие технологии клиент-сервер” № 4 (15)’98

Работа Delphi4 с объектами Oracle8

Евгений Крылов

Выпустив на рынок первую в мире объектно-реляционную СУБД Oracle8, корпорация Oracle еще раз убедительно подтвердила свое лидерство в мире “высокой моды” для систем обработки данных. Передовые производители инструментальных систем тотчас же отреагировали на это выпуском новых версий. Delphi в четвертой версии обрела новые возможности, предоставив новые возможности для работы с объектами Oracle8.

Delphi4 снабжена новыми компонентами, позволяющими строить эффективные приложения с использованием новых подходов к построению структур данных. А раз уж лидером в этой области является Oracle, то и все типы данных из Oracle8 должны поддерживаться. Корпорация Inprise блестяще с этим справилась, подтвердив свою репутацию лидера на рынке инструментальных средств.

Вложенные таблицы пришли на смену более сложным в обращении с ними отношениями “master- detail”. Вместо того, чтобы постоянно заботиться о правильности работы с такими конструкциями, разработчики для Oracle8 должны представлять себе единую конструкцию вложенной таблицы, не особо интересуясь “а что там внутри?”. Это также удобно, как работать за компьютером, не думая, как летят электроны по проводникам внутри микросхем.

Другим следствием этого новшества явилось значительное (в четыре раза) ускорение такого доступа к базе данных по сравнению с традиционным.

Вложенной таблицей называется реляционная таблица с неупорядоченными элементами данных одного типа, которые встроены как столбцы в другую таблицу. С вложенными таблицами можно производить такие же операции, как с обычными реляционными таблицами. Как уже говорилось выше, использование вложенных таблиц позволяет избежать сложностей, которые возникают при использовании отношений “master-detail”. ”На пальцах” это означает, что вместо некоторых столбцов стоят другие, подчиненные таблицы.

С помощью утилиты SQL*Plus Oracle8 создадим такую таблицу для хранения данных по учебным курсам некоторого факультета (Этот пример заимствован из документации по Oracle8 Enterprise Edition и желающие могут рассмотреть его более подробно, воспользовавшись ею).

Итак, определим объектный тип Course, набрав в командной строке SQL*Plus следующий текст:

SQL> CREATE TYPE Course AS OBJECT (

2 course_no NUMBER(4),

3 title VARCHAR2(35),

4 credits NUMBER(1));

Затем, определим тип CourseList как таблицу типа Course, который предназначен для хранения объектов типа Course_Next:

SQL> CREATE TYPE CourseList AS TABLE OF Course;

Окончательно, создадим таблицу department , которая имеет столбец типа CourseList :

SQL> CREATE TABLE department (

2 name VARCHAR2(20),

3 director VARCHAR2(20),

4 office VARCHAR2(20),

5 courses CourseList)

6 NESTED TABLE courses STORE AS courses_tab;

Каждый пункт в столбце courses представляет собой вложенную таблицу, которая будет содержать информацию о курсах, предлагаемых данным факультетом(department).

Предложение NESTED TABLE необходимо, чтобы указать на то, что department имеет столбец, являющийся вложенной таблицей.

Запустив из Oracle SQL Worksheet этот скрипт, сгенерируем в базе данных таблицу DEPARTMENT с вложенной таблицей COURSES.

Delphi4, как уже упоминалось выше, имеет мощные средства для работы с вложенными таблицами. Продемонстрируем это на примере простейшего проекта.

Откроем новый проект, на форму поместим компонент TDatabase.
Установим в свойстве DatabaseName- имя базы, а в AliasName- алиас базы.

Следующим шагом будет установка компонента TTable. Действия по установке идентичны тем, которые производились в предыдущих версиях Delphi, за исключением того, что в списке свойств компонента появилось новое- ObjectView, которое нужно установить в True, для работы с объектами Oracle8.
После двойного щелчка мышью по изображению таблицы появится форма Form1.Table1. Используя нажатие правой кнопки мыши, вызовем редактор полей (Field Editor), затем из меню выберем поле AddFields и добавим поля все поля из таблицы DEPARTMENT.

Для того, чтобы сделать доступными поля вложенной таблицы, поместим на форму компонент NestedTable и в выпадающем списке для свойства DataSetField выберем Table1COURSES.

Поместим на форму компонент DataSource1 и DataSource2, затем установим их свойства DataSet в Table1 и NestedTable1, соответственно.

Для визуализации данных из таблиц, установим на форму компонент TBDgrid. Установим его свойство DataSet в Table1, в таблице появятся данные(см. рис внизу).

Добавим компоненты для управления доступом к данным(см. рисунок ниже).
И, наконец, последний шаг – запуск приложения. В маленьком окне – данные из вложенной таблицы, доступ к которой можно осуществить нажатием кнопки в столбце COURSES.
Более подробно познакомиться с возможностями совместной работы продуктов Delphi 4 и Oracle8 можно на курсах, которые проводятся в Учебно-консалтинговом центр Interface Ltd.: тел. (095)135-55-00, 135-25-19, mail@interface.ru

Координаты автора:
Учебно-консалтинговый центр Interface Ltd.,
тел. (095)135-55-00, 135-25-19,
e-mail: mail@interface.ru


Interface Ltd.

Подготовили: Ярцев Алексей, E-mail: yartsev@interface.ru
Елена Александрова, E-mail: webmaster@interface.ru