Bonjour,
Je voudrais savoir s'il est possible de gérer les transaction FireBird dans une DLL.
En effet j'ai un programme qui marche correctement pour le moment et dans ce programme certaines fonctionnalités sont génériques (agenda, messagerie interne, sauvegarde et restaure de base, administration bdd et uti etc...)
Je voudrais utiliser des Dll afin d'y empacter chaque fonctionnalité indépendament les unes des autres, en effet aujourd'hui tout est dans un seul programme ce qui est assez lourd (des dll seraient mieux à mon sens).
Le problème est comment faire pour gérer la connexion à la base de données, (connextion à la BDD lors du lancement de l'application) et création d'une transaction et d'un query à chaque fois que je fais appel à une fonctionnalité qui questionne ou mets à jour la bdd.
En résumé je voudrais une architechture qui pourrais ressembler à ce qui suit :
- AGENDA.DLL ==> Pour gérer les agendas (fonction, prrocédure, Form)
- MESSAGERIE.DLL ==> Pour gérer les messagerie interne(fonction, prrocédure, Form)
- SAUVRESTAUR.DLL ==> Pour gérer les suvegarde et les restauration (fonction, prrocédure, Form)
- QUERY.DLL==> Gére la création des querys et transaction (open, next, execsql etc..) (fonction, prrocédure, Form)
Ensuite dans mon programme principal MON_PROG.EXE :
1- Au lancement je créer la connection à la BDD firebird :
2- Dans mon_prog.exe si l'utilisateur appel à la messagerie interne , alors je charegs la DLL MESSAGERIE.DLL et je créer une transaction et un query lié à la database My_DATABASE créer dans MON_PROG.EXE:My_DATABASE:=TIBDataBase.create(Nil);
My_DATABASE.DatabaseName := PTR_WORK_QUERY.REPERTOIRE_BDD;
My_DATABASE.SQLDialect := 3;
My_DATABASE.Params.Clear;
My_DATABASE.Params.Add('user_name=SYSDBA');
My_DATABASE.Params.Add('password=masterkey');
My_DATABASE.LoginPrompt := false;
My_DATABASE.Connected := true;
En esperant que mes explication soient OKMY_SESSION_TRANSACTION:=TIBTransaction.create(Nil);
MY_SESSION_TRANSACTION.DefaultDatabase := My_DATABASE;
MY_SESSION_TRANSACTION.StartTransaction;
MY_SESSION_TRANSACTION.CheckInTransaction;
MY_QUERY:=TIBQUERY.create(Nil);
MY_QUERY.Database:= My_DATABASE ;
MY_QUERYTransaction := MY_SESSION_TRANSACTION;
MY_QUERYClose;
MY_QUERYSQL.Clear;
MY_QUERYSQL.Add(SQLTXT);
MY_QUERYEXECSQL
etc...
Dans l'attente d'une réponse cordialement
QAYS
Partager