В новом 2006 году мы опубликуем цикл статей о работе c Oracle и
Interbase в Delphi. Автором данного цикла статей будет Ваш покорный
слуга - координатор рассылки Gelios :) В этом цикле статей я поделюсь
с Вами накопленным за несколько лет опытом по работе с СУБД Oracle и
Interbase в Delphi.
Вы можете спросить, почему именно Oracle? Ответ прост - я работаю в
крупной финансовой организации с очень обширной филиальной сетью. А
для финансовых структур негласным стандартом является использование
сервера Oraсle. А вот для филиалов из-за простоты сопровождения и
наличию возможностей подходит сервер Interbase.
В этом выпуске мы начнем расcказ про Oracle и компоненты достпупа ODAC
(Oracle Data Access Components)
Вы приступили к новому крупному проекту, где в качестве СУБД
используется Оракл. И вот перед Вами стал выбор, а какую же библиотеку
использовать для доступа к Ораклу из Делфи? Вместе с Делфи идут три
библиотеки доступа: это движок BDE, который появился еще в первой
версии Делфи и даже был доступен в исходных кодах для форматов
dBase/Paradox еще со времен Turbo Delphi 6.0/Borland Delphi 7.0,
объекто-ориентированный механизм доступа к данным от Microsoft ADO
(впервые появился в Delphi 6.0) и появившейся в Delphi 6.0 в качестве
алтернативы BDE компоненты dbExpress. Эти указанные библиотеки имели
так много минусов (требуют для своей работы установки дополнительного
ПО, являются универсальными и как следствие не учитывают особенности и
возможности Оракла и к тому же являются не очень быстродействующими,
особенно ADO) и так мало плюсов, что сразу было принято решение
отказаться от них и искать компоненты прямого доступа.
Поиск в Интренете выдал две библиотеки прямого доступа к ораклу.
Это библиотеки DOA и ODAC. Почитав описания библиотек и
попробовав их функциональность "вживую" выбор был сделан в пользу
ODAC'a. Вот основные пункты, которые были выделены у ODAC'a:
- Не требует установки дополнительного ПО.
- Наиболее максимально приближен к парадигме Борландовского
TDataSet.
- Большое количество дополнительных компонентов.
- Библиотека динамически развивается.
- Были найдены компоненты для интеграции ODAC и FastReport 2.x
(пожалуй, этот пункт решающим критерием для выбора ODAC). В пятой
версии библиотеки ODAС уже содержит встроенные средства для интеграции
с FastReport 2.x и FastReport 3.x
- Так же очень понравилась возможность использовать программы,
написанные на ODAC'e на компьютерах без установленного программного
обеспечения Oracle (то есть без клиента Oracle, хотя при этом есть
некоторые ограничения). При использовании этой возможности скорость
работы программы с сервером является максимально возможной (так как
отсутствуют разные посредники).
- в процессе работы были выявлены такие положительные черты, как
возможность автоматической генерации команд insert/update/delete;
технология smart refresh; автоматическое подключение ORA-компонент к
активной ORA-сессии, что особенно актуально при создании автономных
FastReport'ких отчетов.
Рассмотрим вкратце основные компоненты библиотеки ODAC:
- TOraSession - устанавливает связь с сервером Oracle.
- TOraQuery - позволяет выполнять запросы, хранимые процедуры
и блоки PL/SQL, редактировать данные (при наличии готовых команд
insert/update/delete), также может выполнять команды
DDL.
- TSmartQuery - автоматически генерирует команды
insert/update/delete для запроса. Таким образом сильно упрощается
жизнь программиста при написании форм ввода/редактирования данных.
- TOraSQL - позволяет выполнять хранимые процедуры, блоки
PL/SQL и любые другие команды. Основное отличие этого компонента от
TOraQuery заключается в том, что TOraQuery предназначен для
взаимодействия с визуальными db-ware компонентами и буферизирует
результаты запроса, а TOraSQL предназначен для выполнения команд и не
совместим с db-ware компонентами, соответственно использует меньше
памяти.
- TOraTable - оставлен для облегчения миграции с БДЕ, предельно упрощает работу с указанной таблицей.
(хотя я бы все же рекомендовал использовать TOraQuery/TSmartQuery)
- TOraStoredProc - используется для выполнения хранимых
процедур. Так же могут быть использованы компоненты TOraQuery/TOraSQL.
Вероятно введен для облегчения миграции с БДЕ.
- TOraErrorHandler - позволяет централизованно обрабатывать
ошибки Оракла и вместо ораклийных сообщений выдавать свои сообщения об
ошибках, более понятные пользователю.
- TOraScript - позволяет выполнять последовательность команд
SQL, PL/SQL в виде единого скрипта.
Хватить лить воду (хоть я по гороскопу и Водолей), пора приступать
к практическим занятиям. Сегодня мы попробуем установить связь с
Ораклом.
Для начала скачиваем ODAC (Вы это еще не
сделали?), устанавливаем, загружаем Делфи и создаем новый проект.
Переходим на вкладку Oracle Access и поместим компонент TOraSession на
форму
Для настройки коннекта к БД нужно заполниться свойства Server,
Username, Password или свойство ConnectString.
Если оставить
незаполнеными эти свойста, то при попытке подключения к БД (Connected
:= True), то ODAC выведет встроенное окно подключения к БД:
Чтобы не вводить "ручками" строку коннекта и для проверки связи
можно воспользоваться редактором настройки подключения. Для этого на
компоненте OraSession1 нажмите правую кнопку мыши и выберите пункт
Session Editor:
Заполняем форму и нажимает кнопку Connect. Соединение с Ораклом
установлено (что можно легко проверить с помошью любой утилиты
мониторинга работы Оракла, например SpotLight for Oracle или штатными
администраторскими средствами Оракла).
Обратите внимание на чекбокс Net. Этот чекбокс открывает путь к
возможности ODAC.NET (не путаете с технологией Microsoft .Net и
версией ODAC for .Net). Если опция NET включена, то ODAC будет
подключатся к Oracle напрямую по протоколу TCP/IP без использования
клиента Оракла. Однако при включенной опции NET нужно указать
техническую информацию для подключения, а именно, IP-адрес сервера,
где установлен Оракл, порт, по которому будет идти соединение (обычно
это 1521, но при желании можно настроить слушатель Оракла на другие
порты) и SID конкретной базы (физически на сервере может крутится
несколько ораклиных баз).
На сегодня наши упражнения окончены. Попробуйте самостоятельно
потренироваться с компонентом TOraSession. Примечание. Попросите вашего
администратора Orcale создать Вам тестовую базу. Скачать бесплатную
версию Oracle 10g Express Edition можно с официального сайта Oracle