c++ - windows上qt连接oracle数据库

标签 c++ oracle qt oracle-call-interface

在 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.

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

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

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

  2. 然后下载并安装oracle客户端win32_11gR2_client.zip .在安装过程中选择Runtime 选项。(即使您使用的是 64 位操作系统,也可以在 oracle 客户端上下载 32 位版本)。它创建 c:\app\user\product\client_1... 目录

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

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

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

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.通过执行这两行来编译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();
}

关于c++ - windows上qt连接oracle数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29508725/

相关文章:

c++ - Qt:如何将 textEdit 光标移动到特定的列和行

c++ - 在 makefile 中为 visual studio C++ build 定义宏

java - 如何生成独特的优惠券代码?

php - mysql_affected_rows 的 Oracle 等价物是什么?

qt - 如何使 QLabel 背景半透明?

c++ - Qt 和 boost 线程本地存储的限制

c++ - 将 float 转换为 int,还是将 int 转换为 float?

c++ - C++ express下搭建POCO具体说明

c++ - '' *2之前的解析错误

sql - 同时运行oracle数据库中相关或相同的程序,互不干扰