Seite 1 von 1

ERROR: QSqlDatabasePrivate::removeDatabase:

Verfasst: 29. Juni 2011 18:13
von bluematrix
Hallo,

ich programmiere das erste mal mit QT eine eigene Datenbank app.
Im Gegensatz zu den ganzen Beispielen, wo die Datenbank in der main erzeugt wird, muss ich meine Datenbank in einer unterdatei erzeugen.

Code: Alles auswählen

bool widget::createConnection()
{
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("tooldatabase.dat");
    if (!db.open())
    {
        db = QSqlDatabase();
        QSqlDatabase::removeDatabase(db.connectionName());
        QMessageBox::warning(0, QObject::tr("Database Error"),db.lastError().text());        
        return false;
    }
    return true;
}
funktioniert alles bestens, jedoch bekomm ich beim chließen des Programms immer folgende Fehlermeldung:

Code: Alles auswählen

QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.

Ich hab jetzt schon viel gegoogelt und zig Varianten versucht, jedoch bekomm ich die Datenbank nicht geschlossen.

Was muss ich genau machen?

Danke

Verfasst: 29. Juni 2011 18:23
von Christian81
Eine QSqlDataBase als Member ist nicht gewünscht und auch gar nicht nötig.
Irgendwo hast Du noch einen QSqlQuery (vielleicht in einem Model oder so) offen wenn Du das Programm beendest. Aber ohne minimales Beispiel...

Verfasst: 29. Juni 2011 18:39
von bluematrix
im Anhnag findest du meinen bisherigen Code.
Der Basiert noch zum Großteil auf dem Beispiel.

alles was nciht mit der datenbank zu tun hat, hab ich rausgelöscht.

wäre toll wenn du mir sagen könntest, was ich ändern muss, damit der fehler nicht mehr kommt.

Verfasst: 29. Juni 2011 18:49
von Christian81
Wie ich schon sagte - Du erzeugst ein SqlModel und das wird nicht gelöscht und deshalb die die SQL-Verbindung noch offen wenn removeDatabase() aufgerufen wird (was z.B. auch passiert wenn man QApplication beendet).

Verfasst: 29. Juni 2011 18:52
von bluematrix
kannst du mir noch sagen Wo und Wie (welchen Befehlen) ich das modell richtig beenden muss?

Verfasst: 29. Juni 2011 19:02
von Christian81
Keine Ahnung - ein minimal kompilerbares Beispiel ist ja nicht vorhanden. Vielleicht wird ja tooldatabasewidget nicht gelöscht?

Verfasst: 29. Juni 2011 19:34
von bluematrix
habs,
hatte tooldatabasewidget irgendwie zweimal erzeugt.
also lag es gar net an der datenbank...
:-(

da kann man sich echt dumm suchen!

[gelöst]