Hallo,
eine Anwendung (Fuhrpark-Verwaltung) speichert Daten in einer
SQL-Datenbank. Über eine Zwischenschicht (einfach ein Object, dass die Daten bereitstellt) wird nun die Möglichkeit geboten
MSSQL, Firebird oder SQLite zu verwenden.
Grundsätzlich empfehle ich, SQLite nur für Einzelplatz-Rechner zu verwenden, will aber auch hier eine Notlösung für 2-3 Clientrechner bieten.
Es wird meistens lesend auf die Datenbank zugegriffen. Schreibzugriffe bei neuem Fahrzeug, Werkstattbesuche oder Verbrauchswerte eingetragen oder neue Bilder eingefügt werden. Denke also, das es sehr selten zu Schreibkollisionen kommen wird.
Meine Lösung über eine Lock-Table ist für SQLite nicht sicher, da ja kein zentrales
DBMS den Zugriff regelt, sondern dezentral die Clientrechner per
DLL auf die
DB zugreifen. Im worst-case locken zwei Clientrechner die gleiche Tabelle/Datensatz.
***
Meine erste Idee und bisher einziger Ansatz ist, das ich eine Datei zur Datenbank mit anlege. Also neben Daten.sqlite noch eine Daten.lock. Diese Datei Daten.lock wird vom Clientrechner exclusiv (ShareDenyAll) geöffnet, bevor ein Schreibzuriff innerhalb der Daten.sqlite erfolgt.
Welche Lösungen würde Ihr vorschlagen?