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 :

requete sql avec c++


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut requete sql avec c++
    Salut à tous,
    voilà mon problème :
    j'ai une requête dans mon programme c++, la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char *requete;
    requete= "UPDATE clients SET flag='1'WHERE id_chambre=1" ;
    cette requête marche et l'action demandée est exécutée dans la BD, sauf que la valeur 1 est fictive et qu'en verité cette valeur est récupérée à partir d'un variable, donc la requete est sensée avoir plutot cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char *requete;
    int chambre(1);
    requete= "UPDATE clients SET flag='1'WHERE id_chambre=chambre" ;
    mais ça ne marche pas
    Comment faire pour que la condition de WHERE se fasse avec la variable "chambre" quelques soit sa valeur!!!

    Merci pour toute aide!!

  2. #2
    Membre émérite Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string chambre;
    string requete= "UPDATE clients SET flag='1'WHERE id_chambre="+chambre ;
    ensuite à toi de faire la conversion si tuy récupère un int pour la variable chambre pour le casté en string

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut
    Salut,
    merci pour la réponse mais ça ne marche pas surout que je suis sensée manipuler des pointeur!!

    j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    requete= "UPDATE clients SET flag='1'WHERE id_chambre="+'1' ;
    mais ça ne mrche pas non plus

    Comment faire???

  4. #4
    Membre éprouvé Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    c'est "1" qu'il faut mettre, pas '1'

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut
    Salut,
    Merci pour la réponse mais "1" ne marche pas, il n'est même pas compilable!!

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut
    Salut,
    finalement le problème est réglé..
    je poste la solution au cas où ça interresserais qlq...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    char requete [256];
    char ch_toString[4];
    int chambre(0);
    strcpy(requete,"UPDATE clients SET flag='0'WHERE id_chambre=\'");
    				strcat(requete,itoa(chambre,ch_toString,10));
                    strcat(requete, "\'");
    				connectionSql(requete);
    Merci à tous pour vos réponse!!

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Citation Envoyé par skyangel20
    Salut,
    finalement le problème est réglé..
    je poste la solution au cas où ça interresserais qlq...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    char requete [256];
    char ch_toString[4];
    int chambre(0);
    strcpy(requete,"UPDATE clients SET flag='0'WHERE id_chambre=\'");
    				strcat(requete,itoa(chambre,ch_toString,10));
                    strcat(requete, "\'");
    				connectionSql(requete);
    Merci à tous pour vos réponse!!
    malheureusement c'est du C pas du C++

    la solution qui était proposée c'était plutôt de faire ça avec des std::string ( voir la FAQ pour l'utilisation avec des entiers, la concaténation avec + et le passage à ta fonction du style: connectionSql( requete.c_str() );

    quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #include <sstream>
    #include <string>
     
    int main(int argc, char** argv)
    {
     
        std::string requete("update etc.. where=");    
        int entier = 3;
     
        std::ostringstream ss;
        ss << requete << entier << "\'";
     
        connectionSql( ss.str().c_str() );
    }
    du coup, si ta requête fait plus de 256 caractères, tu n'es pas embêté. Idem pour ton entier qui peut faire la taille qu'il veut une fois converti en chaîne.

    Dans boost il y a les lexical_cast<> qui permettent simplement de convertir un entier en string et inversement, ce qui permet de s'affranchir du stringstream (au moins dans ton code). C'est sûr que ce n'est pas évident au début de comprendre pourquoi ce type de conversion n'existe pas dans le standard.

    Ici, ss.str().c_str() indique:

    ss.str() -> récupère la string construite dans le string stream
    .c_str() -> récupère la string comme un type C ( un char * donc ), conçut justement pour les fonctions qui attendent un type C.

    Par contre il ne faut pas que ta fonction connectionSql modifie ta chaîne ( qu'elle soit définie comme constante, c'est à dire un paramètre de type const char * )

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Par défaut
    Merci
    je vais essayer ça!!

    Bonne journée!

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

Discussions similaires

  1. Requete SQL avec Rand()
    Par leloup84 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/02/2006, 16h41
  2. requete SQL avec valeur max
    Par oeil de nuit dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2006, 08h58
  3. REQUETE SQL AVEC HAVING
    Par juju_77 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 05/08/2005, 09h49
  4. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 11h18
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

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