Functions

Database.cpp File Reference

#include "database.h"
#include "global.h"
#include "globaltimeconstraint.h"
#include "progresswidget.h"
#include "connectiondialog.h"
#include "querythread.h"
#include <QDebug>
#include <QString>
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QSqlError>
#include <QSqlQuery>
#include <QMutex>
#include <QMutexLocker>
#include <QObject>
#include <QStringList>
#include <QMetaObject>
#include <QMetaMethod>
#include <QWaitCondition>
#include <QSqlIndex>
#include <QSqlField>
#include <QSqlQueryModel>
#include <QSqlRelationalTableModel>
#include <QGridLayout>
#include <QTableView>
Include dependency graph for Database.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.

Referenced by QueryWorker::slotExecute().

{
    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.

Referenced by QueryWorker::QueryWorker().

{
    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;
}