Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Prozedur: Connection oder Query oder nichts übergeben (https://www.delphipraxis.net/69251-prozedur-connection-oder-query-oder-nichts-uebergeben.html)

fkerber 12. Mai 2006 13:47

Datenbank: Firebird embedded • Version: 1.5.3 • Zugriff über: Zeos 6.5.1

Prozedur: Connection oder Query oder nichts übergeben
 
Hallo!

Ich hätte eine Frage eher grundsätzlicher Natur:
Ich habe eine FireBird-Datenbank und überlege wie ich drauf zugreifen kann. Gemeint ist folgendes:

Ich habe eine Prozedur, die nicht an ein Formular gebunden ist - sondern von mehreren aus aufgerufen werden kann.

Jetzt habe ich prinzipiell drei Möglichkeiten:
  • Ich erzeuge in der Prozedur ZConnection und ZQuery, führe die Abfrage aus und geb die Sachen wieder frei
  • Ich übergebe der Prozedur bereits die Connection, erzeuge nur die Query usw. (also Connection liegt als nicht-visuelle Komponente auf dem Form)
  • Ich übergebe direkt die ZQuery an die Funktion (also ebenfalls zur Design-Time erstellte non-visuelle Komponente) und führe dann meine Abfrage aus

Was wäre denn jetzt der "richtige" oder bessere Weg?
Kann da grad keine echten Vor-/Nachteile finden....


Ciao Frederic

RavenIV 12. Mai 2006 13:54

Re: Prozedur: Connection oder Query oder nichts übergeben
 
also ich übergebe immer die Connection und Query an die Funktionen.
Hat den Vorteil, dass es nur eine Connection zur DB gibt und die Connection nicht bei jedem Funktionsaufruf neu verbunden wird.
Ausserdem kann ich dann die Connection-Informationen (user, passwd, usw.) auch zentral verwalten.
Vorteil der gemeinsamen Query:
ich kann auch ausserhalb der Funktion auf die Query zugreifen und evtl weitere Ergebnisse verarbeiten.

Hoshy 12. Mai 2006 13:55

Re: Prozedur: Connection oder Query oder nichts übergeben
 
Ich persönlich bin wieder davon ab, Komponenten dynamisch zur Laufzeit zu erstellen, denn das ist der Übersichtlichkeit nicht gerade zuträglich :-)

Meistens bau' ich ein TDatamodule, in dem die Connection und die Datasets als Komponenten drinliegen...in das DataModule packe ich dann auch alle Methoden rein, die das reine Datenhandling machen. Das DataModule lasse ich automatisch erzeugen, weil ich's ja eigentlich ständig brauche, es muss nur in die Uses-Klausel der Forms rein, die das DM benutzen wollen.

Das würde sich auch in Deinem Fall anbieten, weil mehrere Forms diese Methoden benutzen sollen.

Eine Connection zur aufzeit jedesmal neu auf- und wieder abbauen würde ich aus Performancegründen nciht machen.

mkinzler 12. Mai 2006 13:55

Re: Prozedur: Connection oder Query oder nichts übergeben
 
Ich würde eine datenmodul verwenden, dort die ZConnection ablegen. In der Procedur würde ich nur überprüfen, ob Verbindung schon aktiv und ggf. die Verbindung dann aufbauen.

RavenIV 12. Mai 2006 14:02

Re: Prozedur: Connection oder Query oder nichts übergeben
 
Zitat:

Zitat von Hoshy
Meistens bau' ich ein TDatamodule, in dem die Connection und die Datasets als Komponenten drinliegen...in das DataModule packe ich dann auch alle Methoden rein, die das reine Datenhandling machen. Das DataModule lasse ich automatisch erzeugen, weil ich's ja eigentlich ständig brauche, es muss nur in die Uses-Klausel der Forms rein, die das DM benutzen wollen.

Gibt es zu TDatamodule ein brauchbares Tutorial?
Alle sprechen davon, aber bisher habe ich noch keine eindeutige Beschreibung gefunden...

fkerber 12. Mai 2006 14:02

Re: Prozedur: Connection oder Query oder nichts übergeben
 
Hi!

@mkinzler und Hoshy:
Ich vermute, ihr meint dasselbe? Meint ihr das, was im Anhang zu sehen ist?

Wo genau liegt der Vorteil an dieser Lösung?

@RavenIV:
Danke für deine Meinung.


Ciao Frederic

RavenIV 12. Mai 2006 14:06

Re: Prozedur: Connection oder Query oder nichts übergeben
 
Zitat:

Zitat von fkerber
@mkinzler und Hoshy:
Ich vermute, ihr meint dasselbe? Meint ihr das, was im Anhang zu sehen ist?

Anhang????

Angel4585 12. Mai 2006 14:10

Re: Prozedur: Connection oder Query oder nichts übergeben
 
Ich denke es kommt auf den Verwendungszweck an..

wenn du nur schnell eine Zeile in die DB schiessen willst würde ich sie persönlich zur Laufzeit erstellen und nur die Connection übergeben.

wenn du allerdings in der Query schon Daten selektiert hast, diese bearbeiten willst und danach noch mit derselben Query weiterarbeiten willst, würde ich sie komplett übergeben.

MfG :angel:

Hoshy 12. Mai 2006 14:17

Re: Prozedur: Connection oder Query oder nichts übergeben
 
Zitat:

Gibt es zu TDatamodule ein brauchbares Tutorial?
Alle sprechen davon, aber bisher habe ich noch keine eindeutige Beschreibung gefunden...
In Delphi: Menü "Datei" / "Neu" / Datenmodul...

Ist ja eigentlich nur ein Container zur Aufbewahrung von Connections, Datasets usw...Man kann aber auch andere nicht-visuelle Komponenten reinpacken.

Vorteil: Alle Datenzugriffskomponenten zentral an einem Ort.

Könnte man natürlich auch auf einem TForm plazieren, welches niemals sichtbar gemacht wird, aber dann schleppt man den ganzen Overhead des TForm durch den Speicher :-D

fkerber 12. Mai 2006 15:13

Re: Prozedur: Connection oder Query oder nichts übergeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!

Jepp, das meinte ich wohl!
:wall: :wall: Vergesse den Anhang fast immer ;)

Häng ihn dann mal hier an...


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz