C++ qt连接到windows上的oracle数据库

C++ qt连接到windows上的oracle数据库,c++,oracle,qt,oracle-call-interface,C++,Oracle,Qt,Oracle Call Interface,在Windows 7上,我安装了qt creator,现在我正在尝试连接到oracle数据库。我安装了oracle客户端和plsql/developer,一切正常。在qt creator中,我有一个错误: QsqlDatabase:未加载QOCI驱动程序 这对我不起作用。是否清楚如何在不同的平台和情况下执行此操作?好的。我找到了解决办法 文件说 设置包含=%INCLUDE%;c:\oracle\oci\include 设置LIB=%LIB%;c:\oracle\oci\lib\msvc cd%Q

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

QsqlDatabase:未加载QOCI驱动程序

这对我不起作用。是否清楚如何在不同的平台和情况下执行此操作?

好的。我找到了解决办法

文件说

设置包含=%INCLUDE%;c:\oracle\oci\include

设置LIB=%LIB%;c:\oracle\oci\lib\msvc

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

qmakeoci.pro

恩马克

如果您没有使用Microsoft编译器,请将nmake替换为make-in 上面的那条线

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

我已指示如何执行此操作:

  • 首先不要忘记安装qt源代码。在安装过程中,选中源复选框

  • 然后下载并安装oracle客户端。在安装过程中选择运行时选项(即使您在oracle客户端上使用64位操作系统下载32位版本)。它创建c:\app\user\product\client\u 1。。。目录

  • 然后打开qtminGW命令行(开始->所有人物->qt[version]->[version]->minGW[version]->qt[version]用于桌面minGW[version]),并移动到oci源文件夹:

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

  • 然后,如文档所述,包括OCI(Oracle调用接口)路径和库:
  • 设置包含=%INCLUDE%;c:\app\user\product[版本]\client\u 1\oci\include

    设置库=%LIB%;c:\app\user\product[版本]\client\u 1\oci\lib\msvc

    5.通过执行以下两行编译oci驱动程序:

    qmake oci.pro

    mingw32 make

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

  • 最后一步是将这两个文件复制到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();
    }
    
    #包括
    #包括
    #包括
    int main(int argc,char*argv[])
    {
    qcorea应用程序(argc、argv);
    QSQLDABASE db=QSQLDABASE::addDatabase(“QOCI”);
    db.setHostName(“我的IP或主机名”);
    db.setDatabaseName(“XE”);
    db.setUserName(“测试”);
    db.setPassword(“测试密码”);
    如果(!db.open())
    {
    qDebug()好的。我找到了解决方案

    文件说

    设置INCLUDE=%INCLUDE%;c:\oracle\oci\INCLUDE

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

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

    qmakeoci.pro

    恩马克

    如果您没有使用Microsoft编译器,请将nmake替换为make-in 上面的那条线

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

    我已指示如何执行此操作:

  • 首先别忘了安装qt源代码。在安装过程中,选中源代码复选框

  • 然后下载并安装oracle客户端。在安装过程中选择运行时选项(即使您在oracle客户端上使用64位操作系统下载32位版本)。它将创建c:\app\user\product\client\u 1…目录

  • 然后打开qtminGW命令行(开始->所有人物->qt[version]->[version]->minGW[version]->qt[version]用于桌面minGW[version]),并移动到oci源文件夹:

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

  • 然后,如文档所述,包括OCI(Oracle调用接口)路径和库:
  • 设置包含=%INCLUDE%;c:\app\user\product[版本]\client\u 1\oci\INCLUDE

    设置LIB=%LIB%;c:\app\user\product[version]\client\u 1\oci\LIB\msvc

    5.通过执行以下两行编译oci驱动程序:

    qmake oci.pro

    mingw32 make

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

  • 最后一步是将这两个文件复制到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();
    }
    
    #包括
    #包括
    #包括
    int main(int argc,char*argv[])
    {
    qcorea应用程序(argc、argv);
    QSQLDABASE db=QSQLDABASE::addDatabase(“QOCI”);
    db.setHostName(“我的IP或主机名”);
    db.setDatabaseName(“XE”);
    db.setUserName(“测试”);
    db.setPassword(“测试密码”);
    如果(!db.open())
    {
    qDebug()好的。我找到了解决方案

    文件说

    设置INCLUDE=%INCLUDE%;c:\oracle\oci\INCLUDE

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

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

    qmakeoci.pro

    恩马克

    如果您没有使用Microsoft编译器,请将nmake替换为make-in 上面的那条线

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

    我指导了如何使用d
    INCPATH +=c:\app\user\product[version]\client_1\oci\include
    LIBS+=-Lc:\app\user\product[version]\client_1\oci\lib\msvc
    
    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());