IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

DLL et transaction Interbase/Firebird ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Par défaut DLL et transaction Interbase/Firebird ?
    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 :

    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;
    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_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...
    En esperant que mes explication soient OK

    Dans l'attente d'une réponse cordialement
    QAYS

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Par défaut
    re-Bonjour

    de façon simplifier est-il possible de passer un composant en parametre d'une dll par exemple (non testé)dans la dll messagerie :

    librairie MESSAGERIE;
    ...
    var
    ....
    function create_form_messagerie:stdcall;
    begin
    code de la creation de la form messagrie
    end;

    function search_and_create_cnx_bdd(MY_DATABASE:TIBDATABASE) stdcall;
    begin
    code divers
    end;

    exports

    search_and_create_cnx_bdd,
    create_form_messagerie;
    ....
    Begin
    end.
    Ensuite dans mon_prog.exe je fait appel à search_and_create_cnx_bdd, où je passe en parametre le MY_DATABASE créé en début d'exécution de mon_prog.exe

    Ps: je sais qu'il es possible de passer une chaine de caractéres!
    Dans l'attente d'une réponse
    Cordialement
    QAYS

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Par défaut
    Bonjour,

    j'ai testé cela à marche, toutefois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ann: Interbase / Firebird Transaction Simulator
    Par John Colibri dans le forum Firebird
    Réponses: 1
    Dernier message: 09/07/2013, 16h36
  2. Tester si une transaction est active sous interbase firebird
    Par yaniss321 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 04/05/2010, 12h04
  3. [Débat] Choisir InterBase/Firebird ou Microsoft SQL-SERVER ?
    Par asenaici dans le forum Décisions SGBD
    Réponses: 90
    Dernier message: 19/03/2009, 21h51
  4. [CHOIX BDD] Questions sur Interbase/Firebird ?
    Par Big K. dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 19/06/2004, 13h42
  5. [debutant] diff interbase / firebird
    Par bmayer dans le forum Débuter
    Réponses: 5
    Dernier message: 11/03/2004, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo