Re: Firebird Embedded Server
- From: Matthias Hanft <mh@xxxxxxxx>
- Date: Mon, 06 Mar 2006 15:44:09 +0100
Holger Klemt schrieb:
Ja, jeder Thread braucht seine eigene Connection (oder eben TIBDatabase). Das arbeitet dann wie ein zweites Programm. Und
zwei Programme können nicht gleichzeitig auf einer Datenbank
arbeiten. Wenn du das willst, musst du auf den Embedded Server verzichten und den normalen Server nehmen.
Mist :-( Ich wollte das Zeug möglichst einfach halten und nicht
gleich einen kompletten Server ins Installshield packen...
Andererseits brauche ich pro Zugriff nur zwei (kurze, einfache,
schnelle) Abfragen auf die Tabellen:
- nach User/Passwort anhand Parametern suchen
- Logeintrag machen
und dann darf "der nächste" wieder.
Wenn man das über eine TCriticalSection serialisiert, sollte
doch ein anderer Thread nur um ein paar Millisekunden verzö-
gert werden, oder?
Ich würde dann versuchen, das mit einem TDataModule (mit einer
TIBDatabase mit Active=True, zwei TIBSQL und der dazugehörigen
TIBTransaction) zu lösen, das _nicht_ automatisch erzeugt wird.
Wenn dann ein Thread Zugriff braucht, würde er folgendes machen:
myCriticalSection.Acquire;
myDataModule:=TDataModuleDings.Create(nil); // Db schon Active
try
myDataModule.IBTransaction.StartTransaction;
myDataModule.IBSQLUser.ParameterByName('user').AsString:='x';
myDataModule.IBSQLUser.ExecQuery;
while not myDataModule.IBSQLUser.Eof do
[...]
myDataModule.IBSQLLog.ParameterByName('dings').AsString:='y';
myDataModule.IBSQLLog.ExecQuery;
myDataModule.IBTransaction.Commit
finally
myDataModule.Free
end;
myCriticalSection.Release;
Dann sollte das doch funktionieren, oder? (Mir ist lediglich irgend-
ein Halbsatz in Deinem oder Frau Borries Buch in Erinnerung, daß
das Schließen der Datenbankverbindung wegen "Connection Pooling"
u.U. nicht sofort erfolgt - dann wäre die Verbindung für den
nächsten Thread noch nicht gleich wieder frei. Aber ich kann
mich nicht mehr erinnern, unter welchen Bedingungen dieser
Fall möglicherweise eintritt...)
Ich hoffe damit schon mal deine Tests zu vereinfachen
Oh ja, damit fallen vor allem viele davon weg :-) Danke!
Gruß Matthias.
.
- Follow-Ups:
- Re: Firebird Embedded Server
- From: Marian Aldenhövel
- Re: Firebird Embedded Server
- From: Joachim Duerr
- Re: Firebird Embedded Server
- References:
- Firebird Embedded Server
- From: Matthias Hanft
- Re: Firebird Embedded Server
- From: Holger Klemt
- Firebird Embedded Server
- Prev by Date: Re: IntToString in SQL
- Next by Date: Re: Firebird Embedded Server
- Previous by thread: Re: Firebird Embedded Server
- Next by thread: Re: Firebird Embedded Server
- Index(es):
Relevant Pages
|