[gelöst] immer wieder QSqlDatabase::removeDatabase()
Verfasst: 1. April 2009 14:07
Hallo,
ich weiß das dieses Thema schon öfter hier behandelt wurde. Und ich habe auch einige beiträge dazu gelesen und Ratschläge befolgt. Aber ich stehe entweder so sehr auf dem Schlauch das da gar nix mehr durchkommt oder ich sehe den Wald vor lauter Bäumen nicht.
Ich habe folgende Konsolen-Application:
main.cpp
dbaccess.h
dbaccess.cpp
Die datenbank-Abfrage funktioniert wunderbar. Also Initialisierung, Open usw scheint okay zu sein. Aber am Ende bekomme ich den "beliebten" Fehler:
Ich bilde mir aber ein das ich alle Verbindungen abgebaut bzw. korrekt beendet habe und alle Instanzen auch keine Gültigkeit mehr haben. Aber warum erscheint diese Meldung immer noch?
Grüße,
Willi
ich weiß das dieses Thema schon öfter hier behandelt wurde. Und ich habe auch einige beiträge dazu gelesen und Ratschläge befolgt. Aber ich stehe entweder so sehr auf dem Schlauch das da gar nix mehr durchkommt oder ich sehe den Wald vor lauter Bäumen nicht.
Ich habe folgende Konsolen-Application:
main.cpp
Code: Alles auswählen
#include <QtCore/QCoreApplication>
#include "dbaccess.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
DBAccess db;
db.open();
db.getData();
return 0;
}
Code: Alles auswählen
#ifndef DBACCESS_H
#define DBACCESS_H
class DBAccess
{
public:
DBAccess();
virtual ~DBAccess();
bool open();
void getData();
};
#endif // DBACCESS_HCode: Alles auswählen
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QVariant>
#include "dbaccess.h"
DBAccess::DBAccess()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER=MySQL ODBC 3.51 Driver;DATABASE=database");
db.setHostName("127.0.0.1");
db.setUserName("user");
db.setPassword("password");
}
DBAccess::~DBAccess() {
if (QSqlDatabase::database().isOpen()) {
QSqlDatabase::database().close();
}
QSqlDatabase::removeDatabase(QSqlDatabase::database().connectionName());
}
bool DBAccess::open() {
return QSqlDatabase::database().open();
}
void DBAccess::getData() {
if (QSqlDatabase::database().isOpen()) {
QSqlQuery qu;
qu.exec("SELECT feld1, feld2 FROM tabelle ORDER BY feld1");
while(qu.next()) {
QString mc = qu.value(0).toString();
QString mn = qu.value(1).toString();
qDebug() << "Feld1: " << mc << " Feld2: " << mn;
}
qu.clear();
} else {
QSqlError err = QSqlDatabase::database().lastError();
qDebug() << "DatabaseText: " << err.databaseText();
qDebug() << "DriverText: " << err.driverText();
qDebug() << "Number: " << err.number();
}
}Code: Alles auswählen
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.Grüße,
Willi