[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
Schreiben von Sätzen in die DB
-
- Beiträge: 143
- Registriert: Mo 30. Mär 2020, 12:37
Schreiben von Sätzen in die DB
Zuletzt geändert von Joachim Raap am Mo 25. Mai 2020, 19:39, insgesamt 1-mal geändert.
- gladio
- Beiträge: 223
- 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
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.
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.
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- 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
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
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).
-
- Beiträge: 143
- Registriert: Mo 30. Mär 2020, 12:37
Re: Schreiben von Sätzen in die DB
Vielen Dank