ERROR: QSqlDatabasePrivate::removeDatabase:

Alles rund um die Programmierung mit Qt
Antworten
bluematrix
Beiträge: 12
Registriert: 22. Januar 2011 15:56

ERROR: QSqlDatabasePrivate::removeDatabase:

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bluematrix
Beiträge: 12
Registriert: 22. Januar 2011 15:56

Beitrag 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.
Dateianhänge
tooldatabasewidget.cpp
(9.66 KiB) 153-mal heruntergeladen
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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).
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bluematrix
Beiträge: 12
Registriert: 22. Januar 2011 15:56

Beitrag von bluematrix »

kannst du mir noch sagen Wo und Wie (welchen Befehlen) ich das modell richtig beenden muss?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Keine Ahnung - ein minimal kompilerbares Beispiel ist ja nicht vorhanden. Vielleicht wird ja tooldatabasewidget nicht gelöscht?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bluematrix
Beiträge: 12
Registriert: 22. Januar 2011 15:56

Beitrag 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]
Antworten