Hi all,
In my program i have a main class (kentrko) which creates a QSqlDatabase* object. I want to pass this object to a dialogue to detect whether the connection is opened or closed and if not to open it. The code works fine and compiles but i receive the following error when I am opening the dialogue window again:
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
kentriko class:
#include "kentriko.h"
#include <QMdiSubWindow>
kentriko
::kentriko(QWidget *parent
){
ui.setupUi(this);
connect(ui.actionAnalisi, SIGNAL(triggered()), this, SLOT(anixe_analisi()));
connect(ui.actionSindesi, SIGNAL(triggered()), this, SLOT(anixe_sindesi()));
}
void kentriko::anixe_sindesi(){
sindesi *sindesi1= new sindesi(0,db) ;
sindesi1->show();
}
#include "kentriko.h"
#include <QMdiSubWindow>
kentriko::kentriko(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.actionAnalisi, SIGNAL(triggered()), this, SLOT(anixe_analisi()));
connect(ui.actionSindesi, SIGNAL(triggered()), this, SLOT(anixe_sindesi()));
*db = QSqlDatabase::addDatabase("QMYSQL");
}
void kentriko::anixe_sindesi(){
sindesi *sindesi1= new sindesi(0,db) ;
sindesi1->show();
}
To copy to clipboard, switch view to plain text mode
and the kentriko header:
#ifndef KENTRIKO_H
#define KENTRIKO_H
#include <QtGui/QMainWindow>
#include "ui_kentriko.h"
#include <QtSql>
#include "../parathrira/sindesi/sindesi.h"// i klasi silogi ine orismeni apo tin sindesi giayto xreazete edo to header
#include "../parathrira/analisi/analisi.h"
{
Q_OBJECT
public:
~kentriko();
public slots:
void anixe_analisi ();
void anixe_sindesi ();
};
#ifndef KENTRIKO_H
#define KENTRIKO_H
#include <QtGui/QMainWindow>
#include "ui_kentriko.h"
#include <QtSql>
#include "../parathrira/sindesi/sindesi.h"// i klasi silogi ine orismeni apo tin sindesi giayto xreazete edo to header
#include "../parathrira/analisi/analisi.h"
class kentriko : public QMainWindow
{
Q_OBJECT
public:
kentriko(QWidget *parent = 0);
~kentriko();
QSqlDatabase *db;
public slots:
void anixe_analisi ();
void anixe_sindesi ();
};
To copy to clipboard, switch view to plain text mode
the dialog that i want to pass the db and manipulate it is:
#ifndef SINDESI_H
#define SINDESI_H
#include <QtSql>
#include <QtGui/QDialog>
#include "ui_sindesi.h"
{
Q_OBJECT
public:
~sindesi();
public slots:
void sindesou();
void aposindesou();
private:
Ui::sindesiClass ui;
};
#endif // SINDESI_H
#ifndef SINDESI_H
#define SINDESI_H
#include <QtSql>
#include <QtGui/QDialog>
#include "ui_sindesi.h"
class sindesi : public QDialog
{
Q_OBJECT
public:
sindesi(QWidget *parent , QSqlDatabase* db);
~sindesi();
QSqlDatabase* db3;
public slots:
void sindesou();
void aposindesou();
private:
Ui::sindesiClass ui;
};
#endif // SINDESI_H
To copy to clipboard, switch view to plain text mode
and the implementation:
#include "sindesi.h"
#include <QtSql>
{
db3=db;
ui.setupUi(this);
connect(ui.sindesi, SIGNAL(clicked()), this, SLOT(sindesou()));
connect(ui.aposindesi, SIGNAL(clicked()), this, SLOT(aposindesou()));
}
void sindesi::sindesou() {
if (db3->isOpen())
ui.pliroforia_2->setText("ine idi anixti");
if (!db3->isOpen()) {
db3->setDatabaseName(ui.pinakas->text());
db3->setUserName(ui.onoma->text());
db3->setPassword(ui.kodikos->text());
db3->setHostName("127.0.0.1");
db3->setPort(3306);
if (!db3->open()) {
ui.katastasi->setText("Not connected");
} else {
ui.katastasi->setText("connected");
}
} else {
ui.katastasi->setText("It has already been connected");
}
}
#include "sindesi.h"
#include <QtSql>
sindesi::sindesi(QWidget *parent,QSqlDatabase* db)
: QDialog(parent)
{
db3=db;
ui.setupUi(this);
connect(ui.sindesi, SIGNAL(clicked()), this, SLOT(sindesou()));
connect(ui.aposindesi, SIGNAL(clicked()), this, SLOT(aposindesou()));
}
void sindesi::sindesou() {
if (db3->isOpen())
ui.pliroforia_2->setText("ine idi anixti");
if (!db3->isOpen()) {
db3->setDatabaseName(ui.pinakas->text());
db3->setUserName(ui.onoma->text());
db3->setPassword(ui.kodikos->text());
db3->setHostName("127.0.0.1");
db3->setPort(3306);
if (!db3->open()) {
ui.katastasi->setText("Not connected");
} else {
ui.katastasi->setText("connected");
}
} else {
ui.katastasi->setText("It has already been connected");
}
}
To copy to clipboard, switch view to plain text mode
Any ideas why is this happening?
Many thanks in advance.
Bookmarks