我正在使用 Delphi 5 版本,我想连接到 Oracle 数据库。我有 TDatabase 组件。我不知道如何通过 Delphi 连接到数据库。请提供连接数据库的步骤。谢谢。
3 回答
这很有趣,我刚刚(几分钟前)完成了我的开源本机 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 许可下发布。
有关更多详细信息和反馈,请参阅此网站。
您有一个TQuery
like 包装器,可以像使用 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 版本。;)
该组件TDatabase
属于. 有关 ADO 的介绍,请查看 Embarcadero Docs。如果您选择 Zeos,请查看官方文档。BDE (Borland Database Engine)
Zeos
Working with ADO Components
如果您有 Delphi 5 的企业版,您可以使用 BDE 和 Oracle SQL Link 连接到 Oracle。这是从 D5 使用 Oracle 的最快方式。如果您有专业版,则可以通过 ODBC 使用 BDE 来使用 Oracle。企业版也应该已经有 ADO 组件,但在我的测试中,它是 SQL 链接的劣质解决方案,尽管如果您必须稍后移植到较新的 Delphi 版本,它仍然受支持,而 BDE 和 SQL 链接是不是。
帮助和手册中详细介绍了连接步骤。