Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi dbExpress und Threads (https://www.delphipraxis.net/110684-dbexpress-und-threads.html)

Basic-Master 22. Mär 2008 11:58

Datenbank: MySQL • Version: 5.0 • Zugriff über: dbExpress

dbExpress und Threads
 
Hi,
ich habe letzte Woche angefangen mich etwas mit dbExpress zu befassen. Bis jetzt hat eigentlich auch alles geklappt (SQL Verbindung aufbauen, Queries ausführen und Tables abfragen), allerdings benötige ich demnächst SQL-Abfragen in Threads. Soweit ich weiß ist das auch möglich, allerdings hab ich im Internet bis jetzt keine brauchbaren Demos oder Beispiele dazu gefunden. Ich habe gelesen, dass man dazu "Connection Pools" benötigt, allerdings habe ich zu diesem Thema keine weiteren Informationen gefunden. Wie kann man sowas am besten mit dbExpress umsetzen? Danke im Voraus!

Bernhard Geyer 22. Mär 2008 16:03

Re: dbExpress und Threads
 
Ob dbExpress und der dbExpress-Treiber Thread-Save sind :gruebel:
Ich würde eher für jeden Thread eine eigene Connection öffnen.

Basic-Master 3. Nov 2008 21:28

Re: dbExpress und Threads
 
Habe doch noch was in der Hilfe gefunden, vielleicht hilft es ja noch jemandem. dbExpress ist nur dann thread-safe, wenn auch die Treiber-Bibliothek thread-safe ist. Bei MySQL muss man sich dann u. U. ein entsprechendes Binary besorgen, da man es optional als thread-safe kompilieren kann (ob die MySQL DLLs standardmäßig thread-safe sind kann ich aber nicht sagen). Bei MSSQL gilt: Vorher coinitialize() in jedem Thread aufrufen wie es hier beschrieben ist.

Hier der Auszug aus der CodeGear Online-Hilfe:
Zitat:

Datenzugriffskomponente

Datenzugriffskomponenten sind in folgender Hinsicht thread-sicher: Bei BDE-gestützten Datenmengen muss jeder Thread über seine eigene Sitzungskomponente verfügen. Die einzige Ausnahme stellen Microsoft-Access-Treiber dar, die eine Microsoft-Bibliothek verwenden, die nicht thread-sicher ist. Für dbExpress gilt: Solange die Client-Bibliothek thread-sicher ist, sind dies auch die dbExpress-Komponenten. ADO- und InterBaseExpress-Komponenten sind thread-sicher.
Auch bei der Verwendung von Datenzugriffskomponenten müssen alle Aufrufe, die sich auf datensensitive Steuerelemente beziehen, in der Methode Synchronize gekapselt werden. Beispielsweise müssen alle Aufrufe gekapselt werden, die ein Datensteuerelement über die Eigenschaft DataSet der Datenquelle mit einer Datenmenge verknüpfen. Dagegen braucht der Zugriff auf die Daten in einem Feld der Datenmenge nicht gekapselt zu werden.
Weitere Informationen zu Datenbanksitzungen im Zusammenspiel mit Threads in BDE-gestützten Anwendungen finden Sie unter Mehrere Sitzungen verwalten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz