Umgang mit blockierenden Datenbankfunktionen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
twinkle
Beiträge: 14
Registriert: Di 12. Nov 2013, 23:53

Umgang mit blockierenden Datenbankfunktionen

Beitrag von twinkle »

Ich vermute, dass die SQL-Komponenten von Lazarus blockieren, also nicht asynchron sind. In diesem Fall würde ich einen Query in einen Thread packen. Ist kenn ich mich aber noch nicht sonderlich mit Lazarus aus, wäre das das übliche Vorgehen (Thread)? Danke!

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Umgang mit blockierenden Datenbankfunktionen

Beitrag von Thomas B. »

Ich kenne es nur blockierend. Geht aber wahrscheinlich auch anders.
Ich habe mehrere Threads parallel laufen.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Umgang mit blockierenden Datenbankfunktionen

Beitrag von Michl »

Ich nutze einfach eine zweite Connection, (Transaction), Query und DataSource. Wenn z.B. die erste Conenction mit einer DBGrid verbunden ist, kann man mit der zweiten Verbindung zusätzliche Abfragen/Befehle etc. machen. Dafür braucht es keinen Extra-Thread.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Umgang mit blockierenden Datenbankfunktionen

Beitrag von Socke »

Michl hat geschrieben:Ich nutze einfach eine zweite Connection, (Transaction), Query und DataSource. Wenn z.B. die erste Conenction mit einer DBGrid verbunden ist, kann man mit der zweiten Verbindung zusätzliche Abfragen/Befehle etc. machen. Dafür braucht es keinen Extra-Thread.
Wenn die Abfragen länger als 1 Sekunde dauern (können) ist ein Thread anzuraten.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

twinkle
Beiträge: 14
Registriert: Di 12. Nov 2013, 23:53

Re: Umgang mit blockierenden Datenbankfunktionen

Beitrag von twinkle »

Socke hat geschrieben:
Michl hat geschrieben:Ich nutze einfach eine zweite Connection, (Transaction), Query und DataSource. Wenn z.B. die erste Conenction mit einer DBGrid verbunden ist, kann man mit der zweiten Verbindung zusätzliche Abfragen/Befehle etc. machen. Dafür braucht es keinen Extra-Thread.
Wenn die Abfragen länger als 1 Sekunde dauern (können) ist ein Thread anzuraten.
Jep, das versteht sich von selbst, war mir nur nicht im klaren darüber, was für Eigenschaften die DB-Objekte in Lazarus haben, hätte ja sein können, dass sie über einen flotten async-Modus verfügen. Bin mit der Thread-Theorie bestens vertraut und habe auch schon Threads zusammen mit z. B. Gtk benutzt. Habt ihr eine Linkempfehlung für mich, so als erste Lektüre? Gibt's überhaupt so etwas wie "die Free Pascal Bibel"? So wie K&R bei C, oder Richard Stevens' Werke, wenns um UNIX/Socket/IPC usw. geht :).

Antworten