Delphi 5中的Oracle数据库连接

时间:2011-07-11 14:05:57

标签: oracle delphi delphi-5

我正在使用Delphi 5版本,我想连接到Oracle数据库。我有TDatabase组件。 我对如何通过Delphi连接数据库一无所知。请提供连接数据库的步骤。谢谢。

3 个答案:

答案 0 :(得分:2)

TDatabase组件是BDE (Borland Database Engine)的一部分,这是一种弃用的技术,而是尝试使用另一种支持Oracle的替代方案,如ADO或Zeos。有关ADO的介绍,请查看Embarcadero Docs。 Working with ADO Components如果您选择Zeos,请查看Official documentation

答案 1 :(得分:2)

这很有趣,我{分钟前几分钟}我的开源本机Oracle访问Delphi 5的端口。

以下是此单元的主要功能:

  • 直接访问Oracle Call Interface(OCI)客户端,无需BDE,Midas,DBExpress,也不需要OleDB或ODBC提供程序;
  • 致力于使用任何版本的Oracle OCI接口,从版本8开始;
  • 针对Oracle 11g的最新功能进行了优化(例如,使用本机Int64检索没有小数的NUMBER字段);
  • 能够使用Oracle Instant Client进行无设置应用程序;
  • 原生Unicode(使用内部UTF-8编码),适用于所有版本的Delphi,并对每个数据库字符集进行特殊处理;
  • 尝试从每个版本的Oracle客户端获得最佳性能;
  • 适用于任何版本的Windows,32位或64位架构;
  • 使用新的专用Variant类型对列名称进行后期绑定访问(类似于Ole Automation运行时属性);
  • 连接是多线程就绪,内存和CPU资源开销较低;
  • 可以使用'// 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);
  • 开放源代码,根据MPL / GPL / LGPL许可证发布。

请参阅just finished

你有一个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方法中使用数据库组件,请查看this web site for more details and feedback

  • ATOM访问Oracle Magic;
  • 直接Oracle Access的DOCI组件;
  • NC OCI8;
  • 橙色组件集;
  • Vlad Karpov与Oracle的本地链接。

你会发现一些旧的免费组件,主要是在Oracle 8时创建的(SynDBOracle针对Oracle 11g进行了优化,但可以与早期版本的Oracle一起使用),但这可能更适合您在没有BDE的情况下对Oracle连接的需求。

当然,还有一些非常好的商业组件,仍在使用Delphi 5.但是你必须付出高昂的代价......顺便说一下,应该更好地升级到新的Delphi版本。 ;)

答案 2 :(得分:0)

如果您拥有Delphi 5企业版,则可以使用BDE和Oracle SQL Link连接到Oracle。这是从D5使用Oracle的最快方式。如果您拥有Professional版本,则可以使用Oracle通过ODBC使用BDE。企业版本也应该已经有了ADO组件,但在我的测试中,它是SQL链接的劣质解决方案,尽管如果你必须稍后移植到更新的Delphi版本,它仍然支持,而BDE和SQL链接是不

连接步骤详见帮助和手册。