Datei aus Datenbank öffnen, bearbeiten und aktualisiert in Datenbank zurück übertragen

  • WPF

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Jojo0405.

    Datei aus Datenbank öffnen, bearbeiten und aktualisiert in Datenbank zurück übertragen

    Moin Leute,

    derzeit lade ich z.B. Jpg oder Word Dateien aus der DB schreibe sie in ein Temp Verzeichnis und öffne sie. Ich möchte aber gerne, dass es möglich ist die Dateien zu öffnen und wenn Sie bearbeitet wurden, diese wieder aktualisiert in die DB zu übertragen.
    Das habe ich nun wie folgt realisiert:
    Ich lade sie, schreibe sie in ein Temp Verzeichnis mit exakt dem Dateinamen wie in der DB und öffne sie. Wenn mein Fenster mit der Dateiübersicht dann geschlossen wird, prüfe ich ob sich die Datei verändert hat, lade sie zurück in die DB und lösche sie aus dem Temp Verzeichnis.

    Meine Frage ist nun:
    Solange diese "Dateiübersicht" offen ist, sind die Dateien in der DB als geöffnet gekennzeichnet. D.h. kein anderer Benutzer kann sie öffnen.
    Ist es möglich ein Ereignis auszulösen, wenn die Datei tatsächlich geschlossen wird um dann diese wieder freizugeben?

    Jojo0405 schrieb:

    Ist es möglich ein Ereignis auszulösen, wenn die Datei tatsächlich geschlossen wird um dann diese wieder freizugeben?
    Welche Datei meinst du?
    Die in der Datenbank? Die kann ja eiglich garnet geschlossen werden, da kann man allenfalls einen Wert setzen, dass dieser Datensatz nun wieder für andere bearbeitbar ist.
    Die im Temp-Verzeichnis?
    Wieso willst du da ein Event auslösen - du weißt doch, wann du sie schließt, weil du schließt sie ja selbst.

    Vermutlich möchtest du, dass die Datenbank ein Event versendet an alle angemeldeten Benutzer, wenn sich der Datensatz-Status auf "bearbeitbar" umstellt.
    Das ist a) möglich, aber nicht einfach - Stichwort SqlDependancy bei SqlServer (die meisten anderen DBS können das nicht)
    b) ist das eine gute Idee, jeden Nutzer zu informieren, wenn irgendein besch... - Datensatz geändert wurde?
    @ SimpleSoft:
    Firebird Datenbank, Datentyp Blob

    @ErfinderDesRades:
    Die Datei im Temp verzeichnis. Ich weiß wann ich sie schließe, aber das geschieht im besten Fall erst, wenn ich diese Dateiübersicht schließe. Und falls ich mal vergesse diese zu schließen, ist die Datei in der DB die ganze Zeit über als geöffnet gekennzeichnet und somit hätte in der Zeit kein Nutzer darauf zugriff.
    jo, so Sperren erfordern immer in irgendeiner Weise einen TimeOut, wo "vergessene" Sperren dann aufgeräumt werden.

    Ich kenn mich nicht gut aus, aber in Datenbanken wird oft ein TimeStamp-Datentyp verwendet, was mir praktisch scheint, denn man muss nix aktiv "freischalten", sondern eine Sperre ist von selbst ungültig, sobald die Zeit drüber ist.