Schreiben von Sätzen in die DB

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

Schreiben von Sätzen in die DB

Beitrag von Joachim Raap »

[gelöst] Hallo, mal wieder eine Frage:
Ich habe in meiner Anwendung festgestellt, daß beim Erzeugen eines neue Satzes dieser zwar im Programm vorhanden ist bei einer Abfrage der DB direkt über die MySQL-Workbench der/die neuen Sätze aber erst angezeigt werden, wenn ich das Programm schließe. Daher vermute ich, daß die Sätze in so einer Art Puffer liegen und erst bei Prorgammende (wenn die DB-Verbindung wieder geschlossen wird) übertragen werden.
1. Ist das so richtig?
2. Kann ich mit einen Befehl erzwingen, daß neue Sätze sofort in die DB geschrieben werden? Sonst wären ja bei einem evtl. Absturz die "ganze" Arbeit futsch.....

Danke
Zuletzt geändert von Joachim Raap am Mo 25. Mai 2020, 19:39, insgesamt 1-mal geändert.

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Schreiben von Sätzen in die DB

Beitrag von gladio »

Geänderte Daten oder neu erstellte Datensätze sollten so schnell wie möglich in die Datenbank geschrieben werden.
Schau mal hier: https://wiki.freepascal.org/SqlDBHowto/de
Interessant sind dabei ApplyUpdates und Commit .
Es gibt auch Datenbankkomponenten, die das automatisch erledigen, bzw. wo man den Automatismus entsprechend vorgeben kann.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Schreiben von Sätzen in die DB

Beitrag von af0815 »

Langform:
Grundlegend puffert die DB-Schicht - bei Lazarus meist SQLdb und ZEOS - die Daten zwischen. Ob Daten sofort in die DB geschieben werden kann man bei beiden einstellen. Dazu kommt noch das Transaktionsmangment.

Bei SQLdb geht das in der Query unter Options->sqoAutoApplyUpdates und sqoAutoCommit,
bei ZEOS in der Connection AutoCommit und der Eigenschaft CachedUpdates in der Query (ist normalerweise off). Nur wenn CachedUpdates aktiv ist, benötigt man IMHO ApplyUpdates (Verwende ZEOS aktuell nicht, daher kann es sich geändert haben).

Es unterscheiden sich SQLdb und ZEOS in so kleinen wichtigen Dingen, das muß man berücksichtigen. Daher kann es auch verschiedene richtige Antworten geben.

Kurzform:

ad 1) ja
ad 2) ich gehe von SQLdb aus, setze doch für eine einfache DB die Flags in der Query unter Options->sqoAutoApplyUpdates +sqoAutoCommit
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

Re: Schreiben von Sätzen in die DB

Beitrag von Joachim Raap »

Vielen Dank

Antworten