Das selbe Objekt im gesamten Projekt verwenden
-
Hallo,
ich suche einen Weg, wie ich ein Objekt im gesamten Projekt verwenden kann.
Ich greife mit meiner Anwendung auf eine MySQL-Datenbank zu und finde es unnötig, immer wieder eine neue Verbindung aufzubauen, bzw. dies an 100 Stellen zu machen.Ich dachte mir, ich schreibe dafür eine Klasse, bzw. speichere das TSQLQuery-Object irgendwo, wo ich von überall drauf zugreifen kann.
Könnt ihr mir da einen Tipp geben?
Wie arbeitet ihr mit Datenbanken?
Liebe Grüße im Voraus:
speedyEDIT: Kann mir jemand sagen, wieso das Wort "V o r r a u s" hier durch "V******" ersetzt wird? Nur, weil es ein Rechtschreibfehler ist?
-
Was du suchst ist eine globale Variable.
-
speedtouch92 schrieb:
Nur, weil es ein Rechtschreibfehler ist?
Du hast es erraten. Das durchschnittliche Anfängerposting im C++-Subforum sah vor einigen Jahren etwa so aus:
Hey hallo ihr, ich habe eine Frage zum C++ Standart und zwar versteh
ich nicht irgendwie weil ich hab da so <iostream.h> Included und der compiler
macht da so voll den Fehler und Satzzeichen sind auch doof bitte helft mir!!!11
Vielen Dank im Vorraus!!Auf Dauer ist das einfach anstrengend fürs Auge. Bis die Forensoftware derart umgebaut ist, daß sie solche Einlassungen einfach komplett schluckt, wird es wohl noch etwas dauern; einstweilen muß man sich mit der automatischen Brandmarkung zufrieden geben.
Wenn du Wert darauf legst, unbedingt mit Rechtschreibfehlern zu schreiben, gibt es natürlich trotzdem Mittel und Wege: einfach leere Inline-Tags wie z.B. [i][/i] in das Wort einfügen.
-
dot schrieb:
Was du suchst ist eine globale Variable.
Im Prinzip ja - aber wenn's um Komponenten geht, ist der bequemste Weg dorthin, die gemeinsame Funktionalität in ein Datenmodul auszulagern, von dem es eine globale Instanz gibt. Dann kannst du die Komponenten weiter im Designer konfigurieren und mußt dich nicht manuell um das Lifetime-Management kümmern.
-
audacia schrieb:
speedtouch92 schrieb:
Nur, weil es ein Rechtschreibfehler ist?
Du hast es erraten.
Mir ist der Rechtschreibfehler zuerst gar nicht aufgefallen, aber die Idee finde ich klasse
Wie genau mache ich das denn mit einer globalen Instanz?
Ich habe mir eine eigene Klasse geschrieben, die im Grunde ein Model repräsentiert.
Ich mache mir mehrere Objekte davon und möchte, dass sich das Model um die Datenbankverbindung kümmert.
Damit ich nicht für jedes Objekt eine Datenbankverbindung aufbauen muss, dachte ich, ich benutze iene für alle.
Da ich mehrere Model-Klassen habe, dachte ich mir, ich extrahiere alles Datenbankspezifische in eine extra Klasse, von der die Model-Klassen erben.
Wie genau sage ich denn der DB-Klasse, dass es nur eine globale Instanz geben soll, bzw. wie lagere ich das in ein Datenmodul aus?
-
speedtouch92 schrieb:
Wie genau sage ich denn der DB-Klasse, dass es nur eine globale Instanz geben soll, bzw. wie lagere ich das in ein Datenmodul aus?
Macht doch die IDE für dich. Erstelle ein Datenmodul, dann kannst du in den Projektoptionen einstellen, daß es automatisch erstellt wird, genau wie die Formulare. Zum Datenmodul TDataModule42 gibt es dann die globale Variable DataModule42, um deren Allokation und Freigabe sich die IDE kümmert.
Natürlich kann es da Konflikte mit der Erstellungsreihenfolge geben, wenn z.B. die Main-Form zuerst erstellt wird, aber aufs Datenmodul zugreifen will. Dann solltest du es besser selbst machen.