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 Update on Monday, May 27th 2025

Connecting to ODBC (Pervasive SQL) database

Scheduled Pinned Locked Moved General and Desktop
4 Posts 2 Posters 4.4k Views
  • 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 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
    • podsvirovP Offline
      podsvirovP Offline
      podsvirov
      wrote on 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 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
        • podsvirovP Offline
          podsvirovP Offline
          podsvirov
          wrote on 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

          • Login

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