QSqlQuery exec

Alles rund um die Programmierung mit Qt
Antworten
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

QSqlQuery exec

Beitrag von reinki0013 »

hi,

habe folgendes Problem mit qsqlquery::exec()

Wenn aus unerwarteter Weise das Netzwerk ausfällt (Kabel durchtrennt, Router down etc.) blockiert die exec() Funktion meine Applikation.
Habe bereits versucht, das Problem mit dem Flag "MAYSQL_OPT_RECONNECT=1" in den Optionen zu lösen, hat leider aber nichts gebracht.
Gibt es hier Lösungsansätze? Bzw. kann man irgendwie in die exec() Funktion ein Timeout einpflegen?

Lg
reinki
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Re: QSqlQuery exec

Beitrag von reinki0013 »

also hat das problem wirklich noch keiner gehabt?
könnte mir vorstellen dass dieses problem doch schon wer gehabt hätte...
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Re: QSqlQuery exec

Beitrag von Markus »

Wie lange läuft Deine QSqlQuery.exec()-Methode normalerweise? 0,5 Sek., 20 Sek. oder 2 Minuten?
Denn beim exec() wird auf dem SQL-Server die Ergebnismenge für Dein Statement vorbereitet, die Du dann zeilenweise mit next() abholst. Und wenn ein Fehler auftritt, dann meldet Dir das exec() oder next(). Ich arbeite schon länger mit SQL-DBs, aber ein Blockieren durch die exec()-Methode konnte ich noch nicht feststellen, außer die Statements brauchten sehr lange, was man aber in einem normalen SQL-Tool überprüfen kann.
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Re: QSqlQuery exec

Beitrag von reinki0013 »

hallo,

also wie lange mein exec() läuft kann ich nicht immer genau sagen, aber normalerweise max. 60sek.
Also meinst du, dass ich mit einem ext. Tool überprüfen sollte ob das exec() blockiert?

Meine Anwendung läuft unter Linux/Debian und wie geschrieben, bei Netzwerkausfällen während dem exec() blockiert das exec() die komplette Anwendung bis zum Neustart...
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Re: QSqlQuery exec

Beitrag von Markus »

Hallo!

Die Dauer der exec()-Methode bzw. das Vorbereiten der Ergebnismenge auf dem SQL-Server war für mich interessant, um zu wissen wie groß der Zeitraum ist, wo ein Netzwerkfehler auftreten kann während exec() läuft. Wenn es im Schnitt maximal eine halbe Sekunde wäre, dann ist die Wahrscheinlichkeit kleiner das Dein Programm blockiert. :?

Mit einem externen Programm wie der MySQL-Workbench hatte ich gedacht zu überprüfen, wie lange Dein SQL-Statement ohne Qt und Deine Applikation läuft bis das Ergebnis übermittelt wird.

Nur leider habe ich auch keine Idee, warum die Methode exec() nicht mehr returned und ein false zurückgibt. Vielleicht wäre nochmal ein Post in Qt-Projekt-Forum interessant.
Antworten