qt 连接到 windows 上的 oracle 数据库

qt connect to oracle database on windows

在 Windows 7 我安装了 qt creator,现在我正在尝试连接到 oracle 数据库。我安装了 oracle 客户端和 plsql/developer,一切正常。在 qt creator 中我有错误:

QsqlDatabase: QOCI driver not loaded

这个qt documentation对我不起作用。是否有明确的教程如何在不同的平台和情况下进行操作?

好的。我找到了解决方案。

文档说

set INCLUDE=%INCLUDE%;c:\oracle\oci\include

set LIB=%LIB%;c:\oracle\oci\lib\msvc

cd %QTDIR%\src\plugins\sqldrivers\oci

qmake oci.pro

nmake

If you are not using a Microsoft compiler, replace nmake with make in the line above.

但是 makenmake 对我不起作用。因为我的机器上没有安装Microsoft Visual c++

我给出了如何执行此操作的说明:

  1. 首先不要忘记安装qt源。在安装期间检查 Sources 复选框。

  2. 然后下载并安装oracle客户端win32_11gR2_client.zip。安装时选择 ose Runtime 选项。(即使您使用的是 64 位 os 在 oracle 客户端上下载 32 位版本)。它创建 c:\app\user\product\client_1... 目录

  3. 然后打开qt minGW命令行(开始->所有peograms->qt[version]->[version]->MinGW[version]- > Qt [version] for Desktop MinGW [version]) 并移动到 oci 源文件夹:

cd C:\Qt\Qt[version]\[version]\Src\qtbase\src\plugins\sqldrivers\oci

  1. 然后如文档所述包括 OCI(Oracle 调用接口)路径和库:

set INCLUDE=%INCLUDE%;c:\app\user\product[version]\client_1\oci\include

set LIB=%LIB%;c:\app\user\product[version]\client_1\oci\lib\msvc

5.compile oci 驱动通过执行这两行:

qmake oci.pro

mingw32-make

它将为您创建两个 .dll 文件 qsqloci.dll(发行版)和 qsqlocid.dll(调试版本)

  1. 最后一步是将这两个文件复制到qtcreator安装文件夹中。 转到:

C:\Qt\Qt[version]\[version]\Src\qtbase\plugins\sqldrivers

并将这些文件复制到:

C:\Qt\Qt[version]\[version]\mingw[version]\plugins\sqldrivers

你准备好了。检查连接试试这个代码:

#include <QCoreApplication>
#include <QtSql>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
    db.setHostName("MY_IP_OR_HOST_NAME");
    db.setDatabaseName("XE");
    db.setUserName("test");
    db.setPassword("test_password");

    if (!db.open())
    {
        qDebug() << db.lastError().text();
    }
    else{
        qDebug() << "Wow opened";
    }

    return a.exec();
}

您应该使用 QODBC 而不是 QOCI

gogagubi 的答案很好,但第 4 步对我不起作用,因为设置 INCLUDELIB 不适用于 mingw32-make.

需要在oci.pro中设置INCPATHLIBS或使用:

qmake "INCPAH +=c:\app\user\product[version]\client_1\oci\include 
       LIBS +=-Lc:\app\user\product[version]\client_1\oci\lib\msvc" oci.pro

将以下行添加到 oci.pro:

INCPATH +=c:\app\user\product[version]\client_1\oci\include
LIBS+=-Lc:\app\user\product[version]\client_1\oci\lib\msvc

再见了; 如果 QODBC 驱动程序存在,您可以连接到 oracle 数据库;(Qt 中的默认 windows 存在)如下所示:

QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
   db.setConnectOptions();
   db.setDatabaseName("Driver={Microsoft ODBC for Oracle};Server=127.0.0.1:1521;Uid=ep;Pwd=605605");
   if(!db.open())
       exit(0);

   QSqlQuery query(db);
   query.exec("select * from t");
   while(query.next())
       QMessageBox::information(0,"",query.value(1).toString());

已连接并允许执行查询; 好运;