Hallo,
ich suche etwas in der Art: QSqlDatabase.isDatabaseLocked
habe leider in der Doku nix gefunden.
wir verwenden eine SqLite3 Datenbank, auf die mehrere Prozesse schreiben.
kann man eigentlich feststellen, ob die DB gelockt ist?
Es gibt ab und zu Probleme, bei denen eine sonst gute Funktion plötzlich beim speichern hängen bleibt.
der query.exec() kommt dann nur über TimeOut zurück.
Ich würde gerne vorher testen, ob die db gelockt ist, und dann eine entsprechende Meldung an den Benutzer ausgeben.
Gruß Tom
SqLite - locked ? kann man das feststellen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: SqLite - locked ? kann man das feststellen
Ich wüsste nicht, dass es mit Qt-Mitteln geht. Eine richtige Datenbank hat dieses Problem ja nicht - ist einzig ein Problem von SQLite.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: SqLite - locked ? kann man das feststellen
Mit QtLockedFile aus den Qt-Solutions kannst Du diese Funktionalität selber bauen. Ich glaube das git ist auf https://qt.gitorious.org/qt-solutions, doc auf http://doc.qt.digia.com/solutions/4/qtl ... index.html.
Code: Alles auswählen
QtLockedFile* _lockFile;
_lockFile = new QtLockedFile( _path + "/workspace.lock" );
if( !_lockFile->open( QFile::ReadWrite ) ){
throw Exception( "Das Lock-File vom Workspace konnte nicht geoeffnet werden." );
}
if( !_lockFile->lock( QtLockedFile::WriteLock, false ) ){
throw Exception( tr( "Der Arbeitsbereich ist gesperrt. " ) + ApplicationData::Name + tr( " läuft evt bereits im Hintergrund." ) );
}
if( _lockFile != null ){
if( !_lockFile->unlock() ){
qDebug() << "failed to unlock redo.lock.file";
}
delete _lockFile;
_lockFile = null;
}
ODT Informatik GmbH, Reto Tschofenig
Re: SqLite - locked ? kann man das feststellen
Danke für die Antworten,
das db-file selber locken ist aus meiner Sicht nicht hilfreich, lesend dürfen ja die anderen Threads zugreifen.
Das sollte aus der SQL Klasse das am besten selbst ermittelt werden können, in welchem Zustand sie sich befindent.
Gruß Tom
das db-file selber locken ist aus meiner Sicht nicht hilfreich, lesend dürfen ja die anderen Threads zugreifen.
Das sollte aus der SQL Klasse das am besten selbst ermittelt werden können, in welchem Zustand sie sich befindent.
Gruß Tom