text: Schreiben von Sätzen in die DB - Deutsches Lazarusforum
  Schreiben von Sätzen in die DB
  Beitrag von Joachim Raap » Sa 23. Mai 2020, 21:30
  [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.
  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.....
  Zuletzt geändert von Joachim Raap am Mo 25. Mai 2020, 19:39, insgesamt 1-mal geändert.
  Re: Schreiben von Sätzen in die DB
  Beitrag von gladio » So 24. Mai 2020, 08:37
  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.
  Beitrag von af0815 » So 24. Mai 2020, 13:01
  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.
  ad 2) ich gehe von SQLdb aus, setze doch für eine einfache DB die Flags in der Query unter Options->sqoAutoApplyUpdates +sqoAutoCommit