2

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

4

3 回答 3

2

这很有趣,我刚刚(几分钟前)完成了我的开源本机 Oracle 访问 Delphi 5 的移植。

以下是本机的主要特点:

  • 直接访问 Oracle 调用接口 (OCI) 客户端,无需 BDE、Midas、DBExpress 或 OleDB 或 ODBC 提供程序;
  • 致力于与任何版本的 Oracle OCI 接口一起工作,从修订版 8 开始;
  • 针对 Oracle 11g 的最新特性进行了优化(例如,使用本机 Int64 检索不带小数的 NUMBER 字段);
  • 能够使用 Oracle Instant Client for No Setup 应用程序;
  • 本机 Unicode(使用内部 UTF-8 编码),适用于所有版本的 Delphi,对每个数据库字符集进行特殊处理;
  • 尝试从每个版本的 Oracle 客户端中获得最佳性能;
  • 设计用于在任何版本的 Windows 下工作,无论是 32 位还是 64 位架构;
  • 使用新的专用 Variant 类型(类似于 Ole Automation 运行时属性)对列名进行后期绑定访问;
  • 连接是多线程就绪的,内存和 CPU 资源开销低;
  • 可以使用 '//host[:port]/[service_name]' 之类的连接字符串,避免使用 TNSNAME.ORA 文件;
  • 使用行数组和 BLOB 获取,以获得最佳性能(例如,ZEOS/ZDBC 没有处理此问题);
  • TQuery 仿真类,用于直接与现有代码重用,以替代 BDE;
  • 处理准备好的语句——但默认情况下,我们依赖 OCI 端语句缓存(如果可用);
  • 本机导出到 JSON 方法,这将是我们 mORMot 框架的主要入口点;
  • 兼容 Delphi 5 至 XE;
  • 由于它不使用 DB 单元,也不使用 DBExpress 或此类其他技术,因此可以与任何版本的 Delphi(甚至是 Delphi XE Stater 或 Delphi 7 Personal)一起使用;
  • 开源,在 MPL/GPL/LGPL 许可下发布。

有关更多详细信息和反馈,请参阅此网站

您有一个TQuerylike 包装器,可以像使用 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 方法中使用 DB 组件,请查看Torry 页面中的相应页面

  • ATOM 访问 Oracle Magic;
  • 用于直接 Oracle 访问的 DOCI 组件;
  • NC OCI8;
  • 橙色组件集;
  • Vlad Karpov 本机链接到 Oracle。

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

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

于 2011-07-11T15:15:08.260 回答
2

该组件TDatabase属于. 有关 ADO 的介绍,请查看 Embarcadero Docs。如果您选择 Zeos,请查看官方文档BDE (Borland Database Engine)ZeosWorking with ADO Components

于 2011-07-11T14:27:11.177 回答
0

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

帮助和手册中详细介绍了连接步骤。

于 2011-07-11T18:18:37.677 回答