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

C++ Discussion :

Variable requete sql


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 5
    Par défaut Variable requete sql
    Bonjour je voudrais faire savir comment on fait pour mettre des varaibles dans une requete sql j'a eu l'idée de faire ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string requete;
    	requete="Insert into temps (idpuce,numtapis,date) VALUES ();"
         if (mysql_query(conn,requete))
    //traitement d'erreur
    je ne sais pas comment remplir idpuce numtapis et date avec des varaibles qui existe il faut faire +nomdevariable il me semble mais je ne sais plus comment ca s'ecrit exactement

    merci

  2. #2
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Ca dépend.

    Si tes variabes sont toutes des string (ce qui m'étonnerait vu les noms de tes variables) tu n'as qu'à utiliser l'opérateur += pour concaténer tes variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    std::string id("1");
    std::string numTapis("3333");
    std::string date("20.01.2006");
     
    std::string requete("Insert into temps (idpuce,numtapis,date) VALUES (");
    requete += id + ", " + numTapis + ", " + date + ");";
     
    if(mysql_query(conn, requete.c_str() ) )
    ...
    (Vite fait et pas testé donc à contrôler).

    Sinon il faut utiliser les flux std::ostringstream pour mettre toutes tes variables puis récupérer la chaîne à la fin. (Voir FAQ).

    A+

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par défaut
    Je ne connais pas MySQL, mais les API de bases de données proposent en général des API où la requete doit etre preparée, puis executée.

    Entre l'execution et la preparation tu fixes la valeur des ces variables. C'est particulierement utile quand tu dois faire plusiers requestes qui ne diferent que par les valeurs des variables.

    Sinon il reste la posibilité du sprintf

    char *requete_base = "Insert into temps(idpuce,numtapis,date) VALUES (%s,%s,%s)"; a utiliser comme format pour sprintf (il doit y avoir un equivalent avec les strings mais je ne le connais pas.

  4. #4
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Citation Envoyé par Gandalf
    Je ne connais pas MySQL, mais les API de bases de données proposent en général des API où la requete doit etre preparée, puis executée.
    C'est vrai que j'ai même pas pensé mais pour le C++ je conseillerais mysql++. Apparemment c'est l'API C que notre ami emploie.

    Citation Envoyé par Gandalf
    il doit y avoir un equivalent avec les strings mais je ne le connais pas
    Les flux !

    Citation Envoyé par Fiquet
    Sinon il faut utiliser les flux std::ostringstream pour mettre toutes tes variables puis récupérer la chaîne à la fin. (Voir FAQ).

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par défaut
    Je connais les flux, mais c'est très nettement moins partique qu'un format...

    la un sprintf(query, querybase,val1,val2,val3);

    et la requete est bonne... (si query est bien alloué, à la "bonne" taille.)

    Mais de toute manière API C ou API C++, les requetes preparée puis executées doivent faire partie de l'API.

  6. #6
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Bah je vois pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oss << "Insert into temps (idpuce,numtapis,date) VALUES (" << i << ", " << numTapis << ", " << date << ");";
    En fait ce serait comme comparé print() et cout finalement... En tout les cas ma préférence reste pour les flux du C++ qui je trouve sont plus facile à manier.

    Pour l'API je ne peux pas me prononcer je connais pas celle de MySQL, seulement mysql++.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par défaut
    Ben sur ce cas particulier, si tu dois faire plusieurs fois la requete tu fais plusierus fois le sprintf. Avec les flux tu es obligé de réecrire, au moins partiellement, la requete à moins d'utiliser bcp de variables.

    Il y a des cas où les flux sont plus pratique, mais pas là.

Discussions similaires

  1. [MySQL] variable requete sql
    Par mathieux45 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 29/05/2013, 11h47
  2. Variable requete SQL
    Par Guybrush87 dans le forum Bibliothèques, systèmes et outils
    Réponses: 1
    Dernier message: 27/09/2011, 17h37
  3. Récupérer valeur variable & requete sql
    Par Mouky dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/05/2011, 11h08
  4. [Oracle] Probleme variable requete SQL Oracle PHP
    Par tatann dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/03/2011, 17h25
  5. [MySQL] probleme variable requete SQL
    Par docteurdorian dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/05/2009, 15h11

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