Подключение oracle к delphi

Обновлено: 04.07.2024

Наталия Елманова, Центр Информационных Технологий

  • иметь меню, похожее на стандартное, с разделами "Файл", "Редактирование", "Сервис", "Справка" (или похожее), при этом пункты меню должны иметь соответствующие "горячие" клавиши клавиши быстрого доступа;
  • иметь инструментальную панель , содержащую кнопки, дублирующие наиболее часто используемые пункты меню;
  • использовать полосы прокрутки , группы радиокнопок, списки, выключатели, строки редактирования и другие интерфейсные элементы, традиционно используемые в современных приложениях;
  • использовать праую клавишу мыши для вызова контекстно-зависимых меню;
  • иметь контекстно-зависимую справочную систему, подсказки для интерфейсных элементов, панель для отражения текущего состояния приложения и комментариев.

Помимо этого, при создании информационной системы следует учитывать возможные пути и возможности ее модернизации, например, потенциальную возможность переноса ее в архитектуру клиент-сервер или замену одного сервера баз данных другим. Такая модернизация должна требовать разумных трудозатрат и происходить безболезненно для пользователя.

Утверждение о том, что приложение должно обладать высокой производительностью, является банальным, однако об этом тоже следует помнить при выборе средства разработки, так как задержки при выполнении тех или иных операций являются одной из главных причин недовольства пользователей.

Современные средства быстрой разработки Windows-приложений, или так называемые RAD-средства (RAD расшифровывается как Rapid Application Development) обладают в той или иной степени почти всеми возможностями создания в приложениях подобных интерфейсных элементов. Многие из них позволяют осуществлять доступ с базам данных, в том числе и к серверным БД. Однако Borland Delphi (как версия 1.0, так и версия 2.0), на взгляд автора, является в этом отношении наиболее наиболее простым и удобным в использовании средством.

  • создание пользовательского интерфейса происходит практически без написания кода;
  • поддерживаются все стандартные интерфейсные элементы - окна просмотра, списки, выключатели, радиокнопки и радиогруппы, полосы прокрутки, меню (как оконные, так и привязанные к конкретным элементам), а также большое количество иных полезных интерфейсных элементов - блокнотов а-ля Word, прогресс-баров и т.д.;
  • легко создаются контекстно-зависимая справка, ярлычки с подсказками, панели состояний, инструментальные панели;
  • имеется большая библиотека шаблонов форм и приложений, которую можно пополнять своими шаблонами;
  • доступ к данным, будь то плоские таблицы или серверные БД типа ORACLE, совершенно однотипен, а описание конкретных источников данных можно вынести за пределы приложения в специальный файл конфигурации бибилиотеки BDE, обеспечивающей универсальную работу с разнородными данными, вплоть до гетерогенных запросов (это могут сделать далеко не все RAD-средства);
  • в процессе разработки можно пользоваться реальными данными, отображаемыми в соответствующих интерфейсных элементах;
  • приложения отличаются высокой производительностью, так как они являются полностью скомпилированными выполняемыми модулями (а большинство используемых RAD-средств использует интерпретируемый код), а, кроме того, язык программирования Object Pascal, используемый в Delphi, отличается жесткой типизацией переменных, что также положительно сказывается на производительности;
  • отладка приложений очень удобна за счет того, что, во-первых , компилятор Pascal является очень быстрым, во-вторых, поддерживается инкрементная компиляция, в-третьих, в среду разработки встроен удобный и гибкий отладчик;
  • средства работы с графикой так же удобны, как и в Pascal (для средств разработки приложений, работающих с БД, это большая редкость);
  • поддерживаются элементы VBX (в первой версии) и OCX (во второй версии); на сегодняшний день на рынке имеется также большое количество дополнительных компонент для Delphi, созданных на самой Delphi, и их создание является несложным процессом;
  • имеется интерфейс со средством контроля версий Intersolv PVCS, облегчающий групповую разработку крупных проектов;
  • имеются удобные средства генерации отчетов, при этом можно использовать и генераторы отчетов сторонних разработчиков (например, Crystal Reports);
  • среда разработки создана с учетом последних достижений в области эргономики - никаких лишних движений мышью, или лишних нажатий на клавиши (рис.1).

Что интересного может предложть Delphi для разработчиков информационных систем на базе ORACLE? Во-первых, высокопроизводительный драйвер этой СУБД (хотя, конечно, никто не запретит Вам пользоваться ODBC, который, естественно, поддерживается Delphi). Во-вторых, Ваши приложения будут добросовестно цитировать все высказвания созданных на сервере триггеров, если таковые будут срабатывать во время работы приложения. В-третьих, если Вы используете версию 2.0 - в Вашем распряжении репозиторий, включающий словарь данных, навигатор баз данных, SQL-монитор, поддержка хранимых процедур и сессий, модули данных, огромное разнообразие интерфейсных элементов, в том числе и похожих на те, что есть в Oracle Power Objects, а также неограниченные возможности наращивания функциональности среды разработки за счет дополнительных эспертов, редакторов свойств и компонент. В-четвертых, Вы можете легко интегрировать в среду разработки продукты третьих фирм, например, для интерфейса с CASE-средствами (один из таких продуктов, CASE Expert - средство для экспорта ER-диаграммы в словарь данных Delphi, входит в поставку Delphi 2.01). Отметим также, что Delphi 2.0 поддерживает многопоточность, OLE-automation и другие механизмы и технологии 32-разрядных операционных систем Windows. В Delphi 2.0 имеются эффктивные механизмы обработки транзакций с использванием механизмов кэшированного обновления данных, поддерживается ряд расширений SQL, имеется Data Pump Expert для переноса данных между серверами и масштабирования приложений. В обеих версиях Delphi Client/Server имеется визуальный конструктор запросов, позволяющий сгенерировать многотабличный запрос на языке SQL, в том числе с вычисляемыми полями (интерфейс и рабочий экран этого конструктора напоминает по внешнему виду некоторые популярные CASE-средства).

Помимо этого, Delphi прекрасно работает с Personal Oracle, что существенно облегчает разработку и отладку приложений, позволяя вынести эти процессы за пределы сети, в которой эксплуатируется действующая версия информационной системы.

На мой взгляд, у Delphi есть один крупный недостаток - созданные приложения не являются многоплатформенными и могут эксплуатироваться только в Windows 95 и NT в случае версии Delphi 2.0, а также дополнительно в Windows 3.1 и 3.11 в случае версии Delphi 1.0 . Но и этот недостаток можно преодолеть путем использования технологии Intranet в корпоративных системах, когда приложение, созданное на Delphi, запускается Web-сервером, а полученные формы отображаются в Web-броузере на компьютере пользователя, где может быть использована любая другая операционная система, отличная от Windows.

Таким образом, Delphi Client/Server 1.0 и Delphi Client/Server Suite 2.0 являются очень удобными инструментами для создания клиентских приложений, использующих серверы ORACLE. Об этом свидетельствует высокая популярность этого средства среди разработчиков программ. Если Вы выбрали это средство - Вы всегда найдете друзей и единомышленников, готовых помочь Вам в случае появления каких-либо проблем, в том числе и в фирме "Интерфейс", имеющей авторизованный учебный центр Borland и консультационную службу.

Для начала рассмотрим используемый в UniDAC режим подключения по умолчанию - "client mode". В этом режиме для подключения к серверу базы данных Oracle используется библиотека Oracle Call Interface (OCI). Для работы через OCI необходимо, чтобы на компьютере было установлено клиентское программное обеспечение Oracle. Для наглядности, создадим тестовую базу данных у которой SID и Service Name не совпадают.

Вариант 1. На компьютере установлен клиент Oracle и настроен TNSNAMES.ORA: Вариант 2. На компьютере установлен клиент Oracle без настроеного TNSNAMES.ORA. Используем Oracle Service Name (SN): При этом порт можно не указывать: Вариант 3. На компьютере установлен клиент Oracle без настроеного TNSNAMES.ORA. Используем Oracle System Identifier (SID): Как и во 2-м варианте порт можно не указывать: Работа с базой данных в "client mode" требует дополнительных затрат на установку и настройку клиентского программного обеспечения Oracle. Поэтому разработчики предоставили возможность подключения к БД Oracle в "direct mode". При его использовании программа подключается к БД по протоколу TCP/IP напрямую, без установки клиентского программного обеспечения. С точки зрения безопасности использование "direct mode" аналогичен использованию клиента Oracle без Oracle Advanced Security. Чтобы подключиться из UniDAC к БД Oracle в "direct mode" необходимо в SpecificOptions экземпляра объекта TUniConnection установить значение свойства "Direct" в "True": Вариант 4. На компьютере не установлен клиент Oracle. Используем Oracle Service Name (SN): Строку параметров сервера можно указать как во втором варианте, без "sn brush: delphi; gutter: false">db.Server := '192.168.1.5:1521/testSN'

и даже без порта: Вариант 5. На компьютере не установлен клиент Oracle. Используем Oracle System Identifier (SID): Как и в 4-м варианте "sid brush: delphi; gutter: false">db.Server := '192.168.1.5/testSID'

Следует отметить, что производительность программы и размер ее файла не зависит от выбранного режима подключения. Но "direct mode" накладывает некоторые несущественные ограничения. Например, могут возникнуть некоторые проблемы при использовании межсетевых экранов. Подробнее о подключении к серверу базы данных Oracle вы можете почитать в документации библиотеки в разделе "Using Oracle data access provider with UniDAC in Delphi".

Можно ли каким-либо образом подключить мое приложение Delphi (FireDac) к базе данных Oracle напрямую?

В настоящее время я могу установить соединение, но мне нужно установить Oracle Client

Я создал демо, которое подключается с использованием имени хоста, порта и экземпляра.

На машине что установленный клиент работает отлично. Уже в машине, которая не имеет клиента, даже со всеми DLL, не подключается, представляя следующую ошибку:

[FireDAC] [Физ.] [Ора] -1309. OCI неправильно установлен на этом аппарате (NOE1 / INIT).

Даже dll oci.dll находится в том же каталоге, что и приложение,

Следует код для подключения:

Еще один параметр, который не работает либо

Можно ли каким-либо образом подключить мое приложение Delphi (FireDac) к базе данных Oracle напрямую?

После других попыток мы обнаруживаем, что ошибка генерируется dll msvcr120.dll, но она не описана в ошибке.

Мы установили следующее программное обеспечение Microsoft, и все работало правильно.

Полный Oracle Client действительно занимает огромную площадь (около 100 МБ) и должен быть установлен до приложения.

Вы можете использовать Oracle Instant Client. Это урезанная версия, предоставляющая доступ только к библиотеке OCI / dll (для издания Basic Light ), которая не требует установки: просто скопируйте dll с вашим exe-файлом. Он поддерживается Oracle, дает высокую производительность и лучшую стабильность. Мы не полностью доверяем клиентам «прямого TCP-соединения», написанным на паскале, которые экономят несколько МБ, но не сертифицированы Oracle - если за использование Oracle много денег, вы можете позволить себе несколько МБ дискового пространства для иметь 100% цепочку соединений Oracle.

Для этого вам необходимо использовать соответствующий драйвер базы данных, который не требует использования Oracle Client.

К счастью, dbExpress предоставляет подходящий драйвер для доступа к базам данных Oracle напрямую через TCP / IP без Oracle Client.

Но dbExpress не бесплатен и, таким образом, увеличит стоимость разработки вашего приложения.

В новом 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:

Хватить лить воду (хоть я по гороскопу и Водолей), пора приступать к практическим занятиям. Сегодня мы попробуем установить связь с Ораклом.

Для начала скачиваем ODAC (Вы это еще не сделали?), устанавливаем, загружаем Делфи и создаем новый проект. Переходим на вкладку Oracle Access и поместим компонент TOraSession на форму

Для настройки коннекта к БД нужно заполниться свойства Server, Username, Password или свойство ConnectString.

Если оставить незаполнеными эти свойста, то при попытке подключения к БД (Connected := True), то ODAC выведет встроенное окно подключения к БД:

Чтобы не вводить "ручками" строку коннекта и для проверки связи можно воспользоваться редактором настройки подключения. Для этого на компоненте OraSession1 нажмите правую кнопку мыши и выберите пункт Session Editor:

Заполняем форму и нажимает кнопку Connect. Соединение с Ораклом установлено (что можно легко проверить с помошью любой утилиты мониторинга работы Оракла, например SpotLight for Oracle или штатными администраторскими средствами Оракла).

Читайте также: