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

XMLRAD Discussion :

Permutation dynamique datasource "locale" temporaire


Sujet :

XMLRAD

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Par défaut Permutation dynamique datasource "locale" temporaire
    Bonjour

    Est-il possible de permutter, pour 1 utilisateur, une datasource sans impacter les autres utilisateurs connectée à mon appli ? J'ai bien trouvée sur le forum qqs discutions de 2003 mais rien de frais, d'où ma relance. Le but est vous l'aurez deviné de piocher dans 2 DB différentes sans que je modifie toutes mes queries !
    A bientot

    Nico

  2. #2
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    c'est possible (mais pas recommandé !) et les discussions de 2003 sont toujours d'actualité cela concerne XMLC_DynamicDatabases dans les initparams

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Par défaut
    Tu veux dire qu'en passant XMLC_DynamicDatabases à 1, je peux permuter de datasource au niveau utilisateur (et donc pas toucher à mon appli) ? Si oui, pour n'est ce pas recommandé ?

  4. #4
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    oui il faut XMLC_dynamicDatabase à 1 dans initPArams et un fichier Databases.xml

    http://www.developpez.net/forums/showthread.php?t=38984

    ce n'est pas recommandé car, par défaut, pour chaque XMLCollection, la connexion est conservée ouverte vers la base de données ce qui permet de ne pas se reconnecté a chaque requête ce qui est couteux.
    si tu actives XMLc_DynamicDatabases, pour chaque requête le framework est obligé de déconnecter la connexion précédente et de connecté la base courante ce qui amène un surcout pour chaque requête.
    Sans compter que l'on perd la préparation de toutes les requêtes SQL des XMLGram, qu'il faut donc repréparer a chaque nouvelle requête HTTP.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Par défaut
    Bon ok, merci pour tes explications (je n'avais pas lu ce thread merci).
    Je vais cogiter vers quoi je m'oriente ..

    A+

    nico

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 100
    Par défaut
    J'utilise perso cette modification de la
    procedure TDataInstruction.CreateQuery;
    dans xmlgram.pas :

    FQueryShared := False;
    FQuery := TDacQuery.Create(nil);
    FQuery.Name := Self.Name;
    DbN:=XmlGram.XmlCollection.XMLRequest.Context.Values['dbname'];
    if DbN<>'' then DataSource:=DbN;
    Query.Database := MLGram.XMLCollection.GetDatabaseComponent(DataSource);

    Query.ParamTypes.Text := List.Text;
    Query.SQL.Text := Statement;

    qui permet que la querie utilise éventuellement la datasource dont le nom est passé dans le paramètre dbname ( en déclarant une variable string DbN dans la procédure)

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