1

我正在尝试在 Qt 应用程序中连接到 Oracle 数据库。我刚刚创建了一个如下所示的示例代码来首先测试数据库连接。

#include <QCoreApplication>
#include <QtSql/QSqlDatabase>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
    db.setHostName("192.168.1.11");
    db.setDatabaseName("dm1db");
    db.setUserName("user");
    db.setPassword("user123");
    bool ok = db.open();
}

它在说

QSqlDatabase: QOCI driver not loaded.
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

这发生在两天前,我了解到我的 Qt Creator 安装中未启用 QOCI。因此,我尝试按照 Qt 的以下指导启用它。

https://doc.qt.io/qt-5/sql-driver.html

我有一个 Oracle 12.1.0.2 客户端。这些文件是 (/home/santhosh/instantclient_12_1) :

oracle 客户端库文件

包含文件(/home/santhosh/instantclient_12_1/sdk/include):

oracle客户端包含文件

Oracle 12.1.0.2 客户端仅包含 libclntsh.so.12.1 文件。因此,我在同一目录中创建了一个指向该文件的符号链接作为 libclntsh.so,以支持根据 Qt 文档进行的命名转换。

我按照 Qt 文档尝试了这个命令来启用 OCI 驱动程序。

./configure -sql-oci OCI_INCDIR=/home/santhosh/instantclient_12_1/sdk/include OCI_LIBDIR=/home/santhosh/instantclient_12_1

但是当它完成时,它会给我一个错误,例如:

ERROR: Feature 'sql-oci' was enabled, but the pre-condition 'libs.oci' failed.

我在 config.log 文件中发现了这个错误。

    loaded result for library config.qtbase_sqldrivers.libraries.oci
Trying source 0 (type inline) of library oci ...
  => source failed condition 'config.win32'.
Trying source 1 (type inline) of library oci ...
oci.h not found in [] and global paths.
  => source produced no result.
test config.qtbase_sqldrivers.libraries.oci FAILED

在过去的两天里,我尝试了一些其他不同的方法,遵循了一些关于在 Qt 中启用 oci 的其他文档。但没有什么对我有用。Qt 文档不清楚如何在上述最新客户端中对 oracle .so 文件进行命名转换。我在用:

我的 Qt 版本详细信息

谁能告诉我一个确切的分步过程,我应该遵循配置我的 Qt Creator 以使用我的 Oracle 数据库?

4

0 回答 0