Забавно, я только что закончил (несколько минут назад) порт моего открытого исходного кода 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. ;)