Announcement

Collapse
No announcement yet.

Datenbank Connect verloren Anwendung hängt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbank Connect verloren Anwendung hängt

    Hallo versuche mein Glück hier noch mal.
    In Delphi datenbankentwicklung konnte mir wohl keiner helfen.

    Habe folgendes Problem.

    Delphi 6 Firebird 1.5

    Anwendung ist gestartet. Datenbank wird verbunden.
    Transactions gestartet.
    Nun bricht mir das Netzwerk weg. zb. Kabel raus
    WLAN Verbindung bricht kurzzeitig ab.

    Effekt: Die Anwendung hängt und kann nur noch über den Taskmanager beendet werden.

    Frage: Wie kann ich das rechtzeitig abfangen bzw. überhaupt abfangen.

    Für Tips wäre ich dankbar.

    Gruß Jens

  • #2
    Du mußt den Transaction-Isolation-Level genau nach Bedarf einstellen. Selbst bei "Kabel ab" Aktionen sind nicht alle Daten weg

    Comment


    • #3
      Hallo Jens,

      hast Du die DB-Anweisungen in einem try{} catch{} Block eingeschlossen ?
      Mit den von uns vernwendeten IBO Komponenten wird eine Exception geschmissen wenn die DB Verbindung verloren geht.
      try{
      m_ptrDB_UsedServer->StartTransaction();
      m_ibcursor_GetIndexItems->First();
      }

      catch (EIB_StatementError& e){m_StrError = e.Message;}

      catch (EIB_Error& e2)
      {
      m_StrError = e2.Message;
      // ISC ERROR CODE:335544721 Datenbankverbindung verloren
      }

      catch (EIBO_ISCError& e3) {m_StrError = e3.Message;}
      catch (EDatabaseError& e4) {m_StrError = e4.Message;}
      catch (EConvertError& e5) {m_StrError = e5.Message;}
      catch (...) {m_StrError = UNKNOWN_DB_ERROR;}

      Gruß
      Gerhar

      Comment


      • #4
        Hallo,

        bei FIBPlus würde die Transaktion mit allen beteiligten Komponenten (Queries) neu gestartet werden.
        So steht es zumindestens in der GHilfe.

        Heik

        Comment


        • #5
          Danke für die Antworten,
          konnte das Problem eingrenzen.
          try except ist das richtige Stichwort gewesen.

          Das einzige Problem sind die noch offenen Transaktionen,
          die versuchen auf die Datenverbindung beim schließen
          zuzugreifen.

          Stichwort autocommit

          Mal sehen wie ich das noch irgendwie finde.

          Gruß Jen

          Comment


          • #6
            Hallo Jens,

            wie hast du das noch gelöst?

            Ich habe eine Anwendung die läuft auf einem IndustriePC, der auf einem Gabelstapler montiert ist. Er verbindet sich mit WLan. Da das Netz nicht immer optimal ist, verliert er häufig die Verbindung.

            Das Problem was wir haben ist, wenn die Anwendung versucht auf die DB zuzugreifen und genau in dem Moment das Wlan weg ist hängt die Anwendung. Es kommt vor das die Anwendung sich komplett blockiert oder dass wir im Stande sind "offline" zu schalten.

            Es scheint dass in gewisse Situationen die Exception gar nicht auftritt und somit dass "offline" schalten nicht möglich ist. Da die Anwendung ja hängt, kann man ja nicht einmal selber die Exception werfen.

            Wie kann man vermeiden dass die Anwendung komplett blockiert?

            Danke für eure Hilfe
            Robert

            Delphi 7 + FIBplus 6.4.

            Comment

            Working...
            X