Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Connecting to ODBC (Pervasive SQL) database
Forum Updated to NodeBB v4.3 + New Features

Connecting to ODBC (Pervasive SQL) database

Scheduled Pinned Locked Moved General and Desktop
4 Posts 2 Posters 4.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Z Offline
    Z Offline
    Zerby
    wrote on 5 May 2013, 12:37 last edited by
    #1

    Hello,

    I need a way to work with Pervasive Database. I've been searching and testing for hours, trying to find a way to do it.. I'm not a complite stranger to C++ and Qt, but I would count myself a beginner and I'm struggling very much with this. I have managed to build the ODBC driver (atleast I think I did), as my C:\Qt\Qt5.0.1\5.0.1\Src\qtbase\plugins\sqldrivers -folder now has four files:

    libsqlodbc.a
    libsqlodbcd.a
    qsqlobdc.dll
    qsqlodbcd.dll

    So, the problem is, that whenever I search the internet for solutions, most of the answers are based on earlier versions of Qt. I'm not with Qt5.0.1, and for example, all of the examples I have found, just include #include <QtSql>. If I start with that, I just get:

    "QtSql: No such file or directory".

    So, with a little improvising, this is my very basic ODBC test code so far:

    @
    #include <QCoreApplication>
    #include <QtSql/QODBCDriver>

    int main(int argc, char *argv[])
    {
    QCoreApplication a(argc, argv);
    QString servername = "LOCALHOST" ;
    QString dbname = "DEMODATA";
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setConnectOptions();
    QString dsn = QString("DRIVER={Pervasive ODBC Engine Interface);SERVER=%1;DATABASE=%2;Trusted_Connection=Yes;").arg(servername).arg(dbname);
    db.setDatabaseName(dsn);

    return a.exec();
    }@

    These things I'm not sure about:

    1. Is that include right?
    2. If the database files are in my local computer, is it right to use LOCALHOST as Servername?
    3. I've gotten that driver name from ODBC Management. I can access the database from Pervasive Control Center just fine, and that driver name is presented in the settings of the database (in Pervasive Control Center).

    Anyway, with this code I get the following errors:

    F:\Arkisto\Qt\test_bench\main.cpp:35: error: variable 'QSqlDatabase db' has initializer but incomplete type
    F:\Arkisto\Qt\test_bench\main.cpp:35: error: incomplete type 'QSqlDatabase' used in nested name specifier

    Thank you in advance, I really hope I find a solution to get this thing started, I'm usually good at learning things from examples and stuff, when I get the basic code working.. But this one really seems hard for me :P

    1 Reply Last reply
    0
    • P Offline
      P Offline
      podsvirov
      wrote on 5 May 2013, 12:49 last edited by
      #2

      Library Qt consists of several modules.
      You need to add the following code to your .pro ​​file:

      @
      QT += sql
      @

      You also need to include the header in your main file:

      @
      //#include <QtSql/QODBCDriver> - no needed
      #include <QSqlDatabase>
      @

      1 Reply Last reply
      0
      • Z Offline
        Z Offline
        Zerby
        wrote on 5 May 2013, 13:29 last edited by
        #3

        Okay, thanks, that got me forward!

        I now compiled and ran the program. At first, I got errors:

        QSqlDtabase: QODBC driver not loaded
        QSqlDatabase: available drivers: QSQLITE

        After that, I copied the files I from C:\Qt\Qt5.0.1\5.0.1\Src\qtbase\plugins\sqldrivers to C:\Qt\Qt5.0.1\5.0.1\mingw47_32\plugins\sqldrivers (is this right?) and now the program runs without errors!

        What would be the next step? If you can provide me with a good tutorial, that would be even better, I can just ask here again if I have too much trouble ;)

        EDIT: I've managed to connect to the demodata -database now, and made some basic queries based on this example:

        http://www.easysoft.com/developer/libraries/qt/example.cpp

        I'll keep trying stuff. Thank you so much Konstantin Podsvirov for your help so far, I'll post more questions if I face problems that I cannot solve myself..

        1 Reply Last reply
        0
        • P Offline
          P Offline
          podsvirov
          wrote on 5 May 2013, 14:50 last edited by
          #4

          Typically, the driver ODBC comes pre-assembled for windows.
          In the version of "Qt 5.0.2 for Windows 32-bit":http://download.qt-project.org/official_releases/qt/5.0/5.0.2/qt-windows-opensource-5.0.2-mingw47_32-x86-offline.exe is it just there (I checked).
          Separate assembly and manually copying is also possible, if necessary.
          Books can be found "here":http://qt-project.org/books.
          At the time I was reading "Max Schlee":http://qt-project.org/books/view/qt_4_professional_programming_with_c.

          1 Reply Last reply
          0

          3/4

          5 May 2013, 13:29

          • Login

          • Login or register to search.
          3 out of 4
          • First post
            3/4
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved