【问题标题】:DBX Error in Delphi Berlin 64bit compiler: Driver could not be properly initialized. When connecting to a Oracle 12c DB ServerDelphi Berlin 64 位编译器中的 DBX 错误:驱动程序无法正确初始化。连接到 Oracle 12c 数据库服务器时
【发布时间】:2016-08-10 02:19:28
【问题描述】:

我在我的应用程序中遇到了以下停止错误。我使用了 Delphi Berlin 64 位编译器。并且还使用了 dbxora.dll 作为 embarcadero 的默认 dbxpress 驱动程序。使用 TSQLConnection 组件连接到 Oracle 12c DB 服务器。

DBX 错误:驱动程序无法正确初始化。客户端库可能丢失、未正确安装、版本错误,或者系统路径中缺少驱动程序。

我该如何解决这个问题?

【问题讨论】:

  • 您是否在您的应用程序中安装了第 3 方安装程序?
  • 您是否安装了 64 位 Oracle 客户端?
  • @lrb - 不,我没有。
  • @Ken White - 是的,我们愿意。已安装 64 位 Oracle 12c。

标签: delphi delphi-10.1-berlin


【解决方案1】:

DB Express 驱动程序本身并不总是足以连接到某些数据源。对于某些数据源(实际上是大多数),您还需要该数据源的客户端驱动程序,通常由数据库供应商自己提供。

Oracle 就是其中之一。

除了DB Express 驱动程序,您还需要安装Oracle Client software provided by Oracle。您还需要确保安装正确的版本。

即在您的情况下,既然您表明您正在构建一个 64 位应用程序,那么您将需要 64 位 Oracle 客户端。

如果您(或您的目标用户)已经安装了 32 位 Oracle 客户端,那么您可以考虑将您的应用程序构建为 32 位应用程序,除非您绝对需要 64 位功能。

【讨论】:

  • 是的,确实如此。我在上面安装了 64 位 Oracle 12c 客户端。所有环境都已经是 64 位了。而且这个问题还在出现。仅供参考,在这种情况下我使用了 OCI 访问。
  • 确定您正在为 Windows x64 目标构建(并运行)一个 EXE 吗?如果您是,那么我要检查的下一件事是它是否在路径上,根据需要。当然还有首要原则:您能否在同一台机器上使用其他 64 位应用程序成功建立 Oracle 连接?
  • 如果您安装了 64 位客户端软件并使用 32 位编译您的 Delphi 项目,这也会发生,让我感到恐惧。
  • @sandman 是的,当然。 32 位应用程序使用 32 位 DLL,而 64 位应用程序使用 64 位 DLL。如果中间没有一些恶作剧,任何一方都无法使用另一方。例如,在打印机驱动程序的情况下,Windows 提供 32 位和 64 位应用程序驱动程序,并负责将打印机调用映射到底层 64 位打印机驱动程序。但是对于数据库驱动程序等专有接口,供应商需要提供这种映射(称为“thunking”),如果它们不提供,那么您的应用程序的“位数”必须匹配司机的位子。
  • @sandman 可能不会,只是因为它不需要。当然,除非 64 位操作系统完全取消了对 32 位进程的支持(看看你的苹果),那么关于是否构建 32 位或 64 位(64 位并非全是肉汁)的决定归结为一个特定的应用程序确实需要它。这主要是指服务器应用程序,而不是桌面/客户端。是否继续在操作系统中提供 32 位支持归结为权衡继续提供支持的成本/复杂性与不会给他们带来直接利益的不便的应用程序/用户/开发人员的数量。
猜你喜欢
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 2022-01-06
  • 2015-06-20
相关资源
最近更新 更多