gogagubi
gogagubi

Reputation: 1015

qt connect to oracle database on windows

On Windows 7 I installed qt creator and now I am trying to connect to the oracle database. I installed oracle client and plsql/developer and everything works fine. In qt creator I have error:

QsqlDatabase: QOCI driver not loaded

This qt documentation does not work for me. Is it clear tutorial how to do it on different platforms and situations?

Upvotes: 0

Views: 8097

Answers (4)

epg900
epg900

Reputation: 1

ciao tutto; you can connect to oracle db with QODBC driver if it exist;(default in Qt windows is exist) Like below:

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());

this is connected and allow to execurte query; buona fortuna;

Upvotes: 0

Hui Tan
Hui Tan

Reputation: 103

gogagubi's answer is good, but step 4 does not work for me because set INCLUDE and LIB does not work for mingw32-make.

It need to set INCPATH and LIBS in oci.pro or use:

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

Add the following lines to the oci.pro:

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

Upvotes: 0

gogagubi
gogagubi

Reputation: 1015

Ok. I found solution.

Documentation says

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.

but make or nmake didn't work for me. Because I have not installed Microsoft Visual c++ on my machine.

I made instruction how to do this:

  1. At first don't forget to install qt sources. During the installation check Sources checkbox.

  2. then download and install oracle client win32_11gR2_client.zip. choose Runtime option during installation.(even if you are using 64 bit os download 32 bit version on oracle client). It creates c:\app\user\product\client_1... directory

  3. then open qt minGW command line(start ->all peograms -> qt[version] -> [version] -> MinGW [version] -> Qt [version] for Desktop MinGW [version]) and move to the oci source folder:

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

  1. then as documentation says include OCI(Oracle call interface) path and library:

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 driver by executing these two lines:

qmake oci.pro

mingw32-make

it will creates two .dll files for you qsqloci.dll(release version) and qsqlocid.dll(debug version)

  1. last step is to copy these two files into qtcreator installation folder. go to the:

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

and copy these files into:

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

and you are ready to go. to check connection try this code:

#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();
}

Upvotes: 2

Haddad
Haddad

Reputation: 127

You should use QODBC instea of QOCI.

Upvotes: 1

Related Questions