Functions

querythread.cpp File Reference

#include "querythread.h"
#include <QDebug>
#include <QQueue>
#include <QList>
#include <QMutex>
#include <QMutexLocker>
#include <QWaitCondition>
#include <QStringList>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlField>
#include <QVariant>
#include <QSqlDriver>
#include <QThread>
#include <QSqlRecord>
#include <QString>
Include dependency graph for querythread.cpp:

Functions

QSqlDatabase createConnection (const QueryThreadConnSpecs &specs, const char *connName)
void connectToDatabase (QSqlDatabase db)

Function Documentation

void connectToDatabase ( QSqlDatabase  db  ) 

Local function to open a connections.

{
    static QMutex mutex;
    QMutexLocker lock(&mutex);
    qDebug() << "Opening connection " << db.connectionName() << " ...";
    if (db.open())
    {
        qDebug() << "Connection " << db.connectionName() << " was successfully established with the server.";
        Q_ASSERT(db.driver()->hasFeature(QSqlDriver::QuerySize));
        Q_ASSERT(db.driver()->hasFeature(QSqlDriver::Transactions));
        Q_ASSERT(db.driver()->hasFeature(QSqlDriver::PreparedQueries));
        //Q_ASSERT(db.driver()->hasFeature(QSqlDriver::BatchOperations));
        Q_ASSERT(db.driver()->hasFeature(QSqlDriver::EventNotifications));

        //config
        db.exec("SET search_path TO \"$user\",public,application,application_deprecated");
    }
    else
    {
        qWarning() << "Unable to connect to database:" << db.lastError().text();
    }
}

QSqlDatabase createConnection ( const QueryThreadConnSpecs specs,
const char *  connName 
)

Local function to setup connection parameteres.

{
    static QMutex mutex;
    QMutexLocker lock(&mutex);
    qDebug() << "Creating database connection " << connName << " ...";
    QSqlDatabase db = QSqlDatabase::addDatabase(specs.driver, connName);
    db.setDatabaseName(specs.dbName);
    db.setHostName(specs.host);
    db.setPort(specs.port);
    db.setUserName(specs.user);
    db.setPassword(specs.passwd);

    if (specs.driver == "QPSQL"){
        db.setConnectOptions("connect_timeout = 1");
    }

    Q_ASSERT(!db.isOpen());
    return db;
}