Oracle Database Connection в Delphi 5 - PullRequest
       28

Oracle Database Connection в Delphi 5

2 голосов
/ 11 июля 2011

Я использую версию Delphi 5 и хочу подключиться к базе данных Oracle.У меня есть компонент TDatabase.Я понятия не имею, как подключиться к базе данных через Delphi.Пожалуйста, предоставьте шаги для подключения базы данных.Благодарю.

Ответы [ 3 ]

2 голосов
/ 11 июля 2011

Забавно, я только что закончил (несколько минут назад) порт моего открытого исходного кода Oracle для доступа к Delphi 5.

Вот основные характеристики данного устройства:

  • Прямой доступ к клиенту Oracle Call Interface (OCI), без необходимости использования BDE, Midas, DBExpress, OleDB или ODBC;
  • Предназначен для работы с любой версией интерфейса Oracle OCI, начиная с версии 8;
  • Оптимизирован для новейших функций Oracle 11g (например, использование нативного Int64 для извлечения полей NUMBER без десятичной дроби);
  • Работает с приложениями Oracle Instant Client для приложений без установки;
  • Natively Unicode (использует внутреннюю кодировку UTF-8) для всех версий Delphi со специальной обработкой каждого набора символов базы данных;
  • Пытался добиться максимальной производительности, доступной для каждой версии клиента Oracle;
  • Предназначен для работы под любой версией Windows, в 32- или 64-битной архитектуре;
  • Доступ с поздним связыванием к именам столбцов с использованием нового выделенного типа Variant (аналогично свойствам среды выполнения Ole Automation);
  • Соединения готовы к многопоточности с низким объемом памяти и загрузкой ресурсов ЦП;
  • Может использовать строки подключения, такие как '// host [: port] / [service_name]', избегая использования файла TNSNAME.ORA;
  • Используйте Rows Array и выборку BLOB для лучшей производительности (например, ZEOS / ZDBC не обрабатывал это);
  • Класс эмуляции TQuery, для прямого повторного использования с существующим кодом, вместо BDE;
  • Обработка подготовленных операторов - но по умолчанию мы полагаемся на кэш операторов на стороне OCI, если он доступен;
  • Собственный экспорт в методы JSON, который будет главной точкой входа для нашей среды mORMot;
  • Совместимо с Delphi 5 до XE;
  • Поскольку он не использует ни блок БД, ни DBExpress, ни другие подобные технологии, он работает с любой версией Delphi (даже Delphi XE Stater или Delphi 7 Personal);
  • Open Source, выпущенный под лицензией MPL / GPL / LGPL.

См. этот веб-сайт для получения дополнительной информации и отзывов .

У вас есть TQuery -обертка для написания кода, как в BDE.

Или вы можете написать код так:

procedure Test(Props: TOleDBConnectionProperties; const aName: RawUTF8);
var I: ISQLDBRows;
begin
  I := Props.Execute('select * from Domain.Customers where Name=?',[aName]);
  while I.Step do
    writeln(I['Name'],' ',I.['FirstName'],' ',I['Address']);
end;

var Props: TOleDBConnectionProperties;
begin
  Props := TSQLDBOracleConnectionProperties.Create(
    'TnsName','UserName','Password',CODEPAGE_US);
  try
    Test(Props,'Smith');
  finally
    Props.Free;
  end;
end;

К сожалению, Delphi 5 не допускает позднего связывания через вариант, который разрешен в Delphi 6 и выше:

procedure Test(Props: TOleDBConnectionProperties; const aName: RawUTF8);
var I: ISQLDBRows;
    Customer: Variant;
begin
  I := Props.Execute('select * from Domain.Customers where Name=?',[aName],@Customer);
  while I.Step do
    writeln(Customer.Name,' ',Customer.FirstName,' ',Customer.Address);
end;

Если вы действительно хотите использовать компоненты БД в подходе RAD, взгляните на соответствующую страницу на странице Torry :

  • ATOM Доступ к Oracle Magic;
  • Компоненты DOCI для прямого доступа к Oracle;
  • NC OCI8;
  • Оранжевый комплект компонентов;
  • Влад Карпов Родная ссылка на Oracle.

Там вы найдете несколько старых бесплатных компонентов, в основном созданных во время Oracle 8 (SynDBOracle оптимизирован для Oracle 11g, но будет работать с более ранними версиями Oracle), но которые могут лучше удовлетворить ваши потребности в соединении с Oracle без BDE.

Конечно, есть и несколько очень хороших коммерческих компонентов, которые все еще работают с Delphi 5. Но вам придется заплатить высокую цену ... и, кстати, лучше обновить ее до более новой версии Delphi. ;)

2 голосов
/ 11 июля 2011

Компонент TDatabase является частью BDE (Borland Database Engine), которая является устаревшей технологией, вместо этого попробуйте использовать другие альтернативы, поддерживающие Oracle, такие как ADO или Zeos.Для ознакомления с ADO ознакомьтесь с документами Embarcadero.Working with ADO Components и, если вы выберете Zeos, проверьте Официальную документацию .

0 голосов
/ 11 июля 2011

Если у вас есть корпоративная версия Delphi 5, вы можете подключиться к Oracle, используя BDE и Oracle SQL Link.Это самый быстрый способ использования Oracle из D5.Если у вас есть Профессиональная версия, вы можете использовать Oracle, используя BDE через ODBC.Версия Enterprise также должна уже иметь компоненты ADO, но в моих тестах тогда это было худшее решение для ссылок SQL, хотя если вам придется портировать позже на более новую версию Delphi, она все еще поддерживается, пока BDE и ссылки SQLnot.

Шаги для подключения подробно описаны в справке и руководствах.

...