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

Bases de données Delphi Discussion :

Quand est-ce qu'on utilise la méthode Prepare pour une requête


Sujet :

Bases de données Delphi

  1. #1
    Membre actif

    Inscrit en
    mai 2010
    Messages
    353
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 353
    Points : 276
    Points
    276
    Par défaut Quand est-ce qu'on utilise la méthode Prepare pour une requête
    Bonsoir à tous,
    SVP , quand est-ce que on utilise la méthode Prepare pour une requête ?
    Et est-ce que c'est obligatoire pour tous les types de requêtes (Insert , Select , Update) ?
    J'utilise comme SGBD Interbase et les composants IBX pour accéder à la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exemple .
    MaRequete.Prepare;
    Merci pour vos aides.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 987
    Points : 35 332
    Points
    35 332
    Billets dans le blog
    54
    Par défaut
    Bonjour,

    L'utilisation de prepare permet d'améliorer la passage de paramètres à une requête.

    Exemple :
    soit un composant requête (TQuery,TIBQuery,TFDQuery ... ) contenant le SQL suivant SELECT col1,col2,col3 FROM table WHERE col1=1
    qui retourne un ensemble de 0 à n lignes

    en simplifiant à l'extrême
    si vous ouvrez votre requête , après bien sûr avoir indiqué la valeur du paramètre requête non préparée le SGBD prépare une zone mémoire, compile la requête, puis procède à la demande pour envoyer le résultat)
    requête préparée les deux premières phases sont déjà faites seul la sélection et l'envoi du résultat reste à faire

    Pour la première exécution de la requête le cumul des temps pour les opérations
    Passage paramètre+ Open
    ou Prepare+Passage paramètre+Open
    seront identiques

    c'est après un rafraichissement de la demande (Close, nouveau paramètre, Open) que la différence de temps sera plus flagrante notamment au niveau du SGBD
    sans prepare le SGBD prépare à nouveau une zone et revérifie le SQL avant d'envoyer les données
    avec prepare seule l'opération d'envoi des données est nécessaire

    Donc, en résumé : une seule utilisation de la requête (open ou ExecSQL) pas besoin de prepare, plusieurs le bénéfice de prepare sera fera sentir dés la seconde utilisation

    Donc pour ce qui est du "obligatoire" la réponse est non pour ce qui est du "conseillé" la réponse est oui en fonction de ce qui est fait avec la requête.
    Tout cela est à pondérer en fonction des composants utilisés car le comportement n'est pas forcément le même selon le groupe IBX, Firedac,DBExpress
    dans votre cas lisez ce qui est écrit dans la doc http://docwiki.embarcadero.com/Libra...BQuery.Prepare
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre actif

    Inscrit en
    mai 2010
    Messages
    353
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 353
    Points : 276
    Points
    276
    Par défaut
    Bonjour Sergio ,
    Merci beaucoup pour la reponse .

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

Discussions similaires

  1. Méthode POST pour une requête sql
    Par killer2015 dans le forum Langage
    Réponses: 2
    Dernier message: 13/11/2016, 01h47
  2. Réponses: 0
    Dernier message: 09/12/2010, 12h32
  3. Est ce que j'utilise la bonne méthode ?
    Par rvzip64 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/05/2009, 22h37
  4. Réponses: 7
    Dernier message: 08/02/2008, 10h35
  5. [GRASP] Est-ce que j'utilise correctement les design pattern?
    Par Tourix dans le forum Design Patterns
    Réponses: 7
    Dernier message: 21/06/2006, 18h27

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