Datenmodul mit Connected=True
- From: Matthias Hanft <mh@xxxxxxxx>
- Date: Wed, 12 Sep 2007 09:39:37 +0200
Hallo,
für den Zugriff auf eine bestimmte Datenbank baue ich üblicher-
weise ein (zur Laufzeit dynamisch erzeugtes) Datenmodul, in dem
sich eine IBDatabase befindet, deren Eigenschaft "Connected"
bereits zur Entwicklungszeit auf "True" steht - dann spare ich
mir das Öffnen zur Laufzeit.
Das funktioniert auch ganz wunderbar, allerdings bin ich mir
nicht sicher, ob das der richtige Weg ist, wenn zur Laufzeit
ein Fehler beim Öffnen der Datenbank passiert (z.B. Datenbank-
server nicht erreichbar o.ä.). Ich vermute, die dann fällige
Exception passiert beim Anlegen des Datenmoduls?, so daß ich
dann wohl schreiben müßte
try
myDataModule:=TMyDataModule.Create(nil);
try
myDataModule.TuWas
except
// Fehlerbehandlung für TuWas-Fehler
end;
myDataModule.Free
except
// Fehlerbehandlung für Datenbank-Öffnen-Fehler;
// .Free nicht nötig, da wegen Exception bei Create
// gar nicht erst angelegt
end;
Stimmt das so richtig?
Zusatzfrage: Was wäre, wenn man in TMyDataModule.OnCreate z.B.
eine TStringList anlegen (und in .OnDestroy freigeben) würde?
Speicherleck, oder funktioniert automagisch? (Im letzteren
Fall: Lebt die TStringList ein paar Millisekunden lang, oder
würde sie gar nicht erst geboren?)
Die gleiche Frage für den Fall, daß man einen eigenen Construc-
tor baut, und darin z.B. schreibt
inherited Create(nil);
FStringList:=TStringList.Create;
und einen eigenen Destructor
FStringList.Free;
inherited Destroy;
und dann beim Create auf die Datenbank nicht zugegriffen werden
kann - klappt?, oder Probleme? Lebt die TStringList mal kurz?
Oooooder sollte man solche Dinge grundsätzlich vermeiden, indem
man zur Entwicklungszeit Connected=False setzt, das Create dadurch
(i.d.R.) niemals schiefgehen läßt und dem Datenmodul eine Property
Connected spendiert, die der aufrufende Prozeß nach dem (i.d.R.
immer erfolgreichen) Create prüfen kann?
Wie ist da der "gute" Programmierstil?
Danke & Gruß Matthias.
.
- Follow-Ups:
- Re: Datenmodul mit Connected=True
- From: Marian Aldenhövel
- Re: Datenmodul mit Connected=True
- Prev by Date: Re: Langsame Textsuche
- Next by Date: Re: Datenmodul mit Connected=True
- Previous by thread: Re: Probleme mit der Verbindung zu Oracle 10g
- Next by thread: Re: Datenmodul mit Connected=True
- Index(es):
Relevant Pages
|