pourquoi recréer à chaque fois ?
tu peux très bien laisser la DB, juste faire des TRUNCATE au démarrage suivant
Surtout si tu lance un EXE et la DLL en même, temps, tu ne peux pas supprimer une DB encours d'utilisation
Est-ce que FB Embedded supporte des connexions multiples et
concurrentielles ?
Semble que nous avons la réponse !
Tu ne peux donc pas connecter EXE et DLL en même temps, on en revient à ma proposition dans un autre sujet d'utiliser une DLL qui gère la DB, l'EXE et l'autre DLL utilisant cette DLL DB, l'Exe utilise LoadLibrary pour charger la DLL DB, l'autre DLL utilise GetModuleHandle pour utiliser la DLL DB déjà chargée
le "pas" s'applique-t-il à modification ET jointure
Si tu fais des jointures, OK, le SQL offre des facilités !
Si tu ne fais pas de jointure, FB me semble bien lourd,
un simple TClientDataSet peut faire l'intermédiaire avec un outil de reporting utilisant le TDataSource\TDataSet comme QuickReport
Perso, pour la création de DB, comme je déployais manuellement, j'utilisais IBExpert
Ton code semble proche de la Doc en ligne du
TIBDatabase.CreateDatabase
Pourquoi ne pas conserver ce TIBDatabase après le CreateDatabase ?
comme ceci
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| Function OpenBase(Nom: string): TIBDatabase;
begin
Result := TIBDatabase.Create(Application);
with Result do
begin
DatabaseName := Nom;
Open(); // vérifier si il faut gérer les Exceptions
if not Connected then
begin
Params.Clear;
Params.Add('USER ''SYSDBA''');
Params.Add('PASSWORD ''masterkey''');
Params.Add('PAGE_SIZE 16384');
Params.Add('DEFAULT CHARACTER SET ISO8859_1');
CreateDatabase;
if not Connected then
Open(); // vérifier si il faut gérer les Exceptions
end;
end;
if not Result.Connected then
FreeAndNil(Result);
end; |
Partager