lock unloack Table

Anfängerfragen zum Programmieren mit PureBasic.
michstro
Beiträge: 16
Registriert: 06.02.2011 16:42

lock unloack Table

Beitrag von michstro »

Hallo zusammen,
also ich möchte von mehrereren Rechnern aus in eine SQLite datenbank schreiben. wenn ich in Purebasic eine Datenbank mit OpenDatabase(0, DatabaseFile$, "", "") öffne und in dieser irgendwas schreibe, kann ich nicht von anderer Stelle in die Datei schreiben. Was ja eigentlich auch gut ist.

Wie gehe ich aber geschickt damit um,
  • muss ich die Datenbank immer geschlossen halten?
  • wie kann ich das kontrolieren? habe irgendwo was von lock und unlock gelesen, aber nichts genaues gefunden.
  • Wie kann ich nach vollendetem Schreiben die Datenbank für andere wieder freigeben?
  • Wie Frage ich das von anderen Rechnern ab und reagiere darauf; der soll ja da auch auf jeden Fall schreiben können und nur evt 1-2 Sekunden warten.
Vielen Dank im Vorraus
Mikk
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: lock unloack Table

Beitrag von NicTheQuick »

Aus der SQLite-FAQ:
SQLite-FAQ hat geschrieben:Multiple processes can have the same database open at the same time. Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time, however.
Kurz gesagt, es können immer mehrere Lesen, aber immer nur einer Schreiben. Vorausgesetzt du nutzt kein NFS-Dateisystem.

Generell empfehle ich aber direkt auf einen richtigen MySQL-Server oder vergleichbares zu wechseln, wenn du Lock/Unlock und mehrere Anwendungen oder Threads auf eine Datenbank zugreifen lassen willst. Mit Commit/Rollback hast du dann sogar noch bessere Möglichkeiten bei komplexen Queries.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: lock unloack Table

Beitrag von edel »

Anstatt direkt in die Datenbank zu schreiben, koenntest du ein drittes Programm dazwischen schalten, welches dann in die Datenbank schreibt.
michstro
Beiträge: 16
Registriert: 06.02.2011 16:42

Re: lock unloack Table

Beitrag von michstro »

Danke für dei Antworten,
falls ich je in eine Datei geschrieben habe, wie kriege ich die Sperre weg?
Ich würde jetzt mal drauf tippen, einfach schliessen und wieder öffnen?
Falls jemand geschrieben hat und die Datei ist noch offen, wie kann ich den Fehler auslesen?
DatabaseError()?
müsste ich mir dann ne routine schreiben die eine gewisse Zeit wartet und dann wiederrum versucht und nach einigen versuchen abbricht und den Benutzer warnt?
Mit einem Requester Retry oder abbruch. Oder gehts irgendwie eleganter?

Mit dem Programm das dann durch andere Programme angesteuert wird funktioniert nicht da die rechner nicht untereinander erreichbar sind.
Aber jeder zugriff auf eine Freigabe hat.
Vielen Dank für eure antworten
Mikk
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: lock unloack Table

Beitrag von edel »

Du koenntest auch einfach eine Textdatei in der Freigabe ablegen, welche dann wieder von einem Programm eingelesen wird.
Antworten