AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi dbExpress und Threads
Thema durchsuchen
Ansicht
Themen-Optionen

dbExpress und Threads

Ein Thema von Basic-Master · begonnen am 22. Mär 2008 · letzter Beitrag vom 3. Nov 2008
Antwort Antwort
Basic-Master

Registriert seit: 9. Mär 2003
Ort: Brilon
395 Beiträge
 
Delphi 2007 Enterprise
 
#1

dbExpress und Threads

  Alt 22. Mär 2008, 11:58
Datenbank: MySQL • Version: 5.0 • Zugriff über: dbExpress
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!
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: dbExpress und Threads

  Alt 22. Mär 2008, 16:03
Ob dbExpress und der dbExpress-Treiber Thread-Save sind
Ich würde eher für jeden Thread eine eigene Connection öffnen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Basic-Master

Registriert seit: 9. Mär 2003
Ort: Brilon
395 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: dbExpress und Threads

  Alt 3. Nov 2008, 21:28
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.
Christian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 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