Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CLuseServer oder clUseClient oder.. (https://www.delphipraxis.net/187648-cluseserver-oder-cluseclient-oder.html)

p80286 17. Dez 2015 15:05

Datenbank: oracle • Version: egal • Zugriff über: ADO

CLuseServer oder clUseClient oder..
 
Hallo Zusammen,
durch Zufall bin ich auf ein seltsames Verhalten gestoßen.
in einer meiner Datenbanken git es eine Tabelle "Name" mit dem Feld "name". Nicht geschickt, aber es ist so. Mit allen möglichen Abfrageprogrammen liefert
SQL-Code:
select name from name where name like 'M%'
ein Ergebnis.
Nun habe ich mir ein kleine Oberfläche zusammengeklickt (TADOConnection+TADOQuery+Stringgrid) die bei obiger Abfrage eine Fehlermeldung ähnlich "empty Rowset" liefert. In anderen Programmen nachgeschaut die diese Fehlermeldung nicht liefern,
Delphi-Quellcode:
ADOConnection
hat
Delphi-Quellcode:
clUseServer
und
Delphi-Quellcode:
ADOQuery
Delphi-Quellcode:
clUseClient
in der
Delphi-Quellcode:
.Cursorlocation
stehen.
Irritierend, aber wenn's klappt. Ausprobiert, der Fehler ist weg, wunderbar. Also zurück geändert um die genaue Fehlermeldung zu reproduzieren.
Kein Fehler! :stupid:

Wenn man die ganzen Voodoo-Tips ignoriert, dann gibt es für Access die Empfehlung clUseServer zu verwenden, in allen anderen Fällen clUseClient. Doch auf das "wo stellt man's ein" wird nicht eingegangen. Darum meine Frage an Euch "Wo stellt man's ein und warum?"

Gruß
K-H

Bernhard Geyer 17. Dez 2015 18:48

AW: CLuseServer oder clUseClient oder..
 
Müsste der bein TQuery-Instanzen sein.

Und Gründe wieso:

clUseServer bei Access da hier eh die Access-Engine in den eigenen Adressraum geladen wird und alles sich dort abspielt. Dann sorgt ein clUseClient nur für unnötiges (und speicherfressendes) sofortiges Kopieren aller Datensätze von der Jet-Engine-Seite auf die "andere Seite" der ADO-Schnittstelle.

Bei allen richtigen DB-Servern sorgt clUseServer zu unnötigen offenhalten des ResultSet auf Serverseite. Dort sorgt man am besten (wenn man eh keine DB-Sensitiven Controls) dafür das möglichst schnell das Resultset geschlossen wird um den Server zu entlasten (der ja u.U. 1000 gleichzeitige Anfragen bearbeiten muss)

p80286 18. Dez 2015 11:19

AW: CLuseServer oder clUseClient oder..
 
Danke!
Bleibt nur noch die Frage warum ADO sich da zunächst eingemischt hat und wußte, das bei der Abfrage nichts heraus kommt. Ich vergaß
Delphi-Quellcode:
select Name.name from Name...
hat natürlich funktioniert.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.

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