Demande d'aide c++ et requête SQL

juliette666 Messages postés 2 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 15 février 2011 - 2 févr. 2011 à 00:43
juliette666 Messages postés 2 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 15 février 2011 - 15 févr. 2011 à 12:04
Bonsoir a tous
pour commencer j'utilise visual studio 2010 (c++ console) et pour ma BD c'est MySQL. j'ai Connexion.h,Connexion.cpp et main.cpp
voila le code de main.cpp:



#include 
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#include <MYSQL/mysql.h>
#include "connexion.h"

using namespace std;

int main(){


  char *hostname,*user,*password,nombase[50];
  unsigned int port;
  hostname="localhost";
  user="root";
  password="012345";
  port=3309;
  strcpy_s(nombase,"test");
  Connexion C(hostname,user,password,port);//instanciation de la classe connexion avec les parametres de la base
  ;

  
if(C.connect("test")==true)
{
system("cls");
cout<<"\n";
cout<<"\t        ************************************************          \n";
cout<<"\t        *                                              *          \n";
cout<<"\t        *  veuillez patienter pendant le chargement    *          \n";
cout<<"\t        *                                              *          \n";
cout<<"\t        ************************************************          \n";
cout<<"\n";
for(int i=0;i<1;i++)
cout<<"\n";
cout<<"\n";
cout<<"\n";
cout<<"\n\t\t */*\\/*\\/*\\OUVERTURE DE L'APPLICATION/*\\/*\\/*\\*         \n"; 
cout<<"\n";	
cout<<"\n\n\n\t\tChargement";
for(int j=1;j<40;j++)
{
Sleep(100);//attente
cout<<".";
}
system("cls");

mysql_query(C.mysql, "SELECT * FROM client;");
            MYSQL_ROW row;
            MYSQL_RES *result;
result = mysql_store_result(C.mysql);
char nrows= mysql_num_fields(result);

while (row = mysql_fetch_row(result))
{

for ( int i=0; i < nrows; i++) 
{
   

cout<<row[i]<<"\t";
}

cout<<endl;
}

mysql_free_result(result);



    
}
else
{
  cout<<"echec de Connexion avec la base";
  system("pause");
  return -1;
}



cout<<"\n";
    cout<<"\n"; 
C.deconnect();
system("pause");
return 0;



}




la connexion avec la BD se fait sans problème ainsi que la requete qui m'affiche tout. ce que je demande c'est d'ajouté une condition a la requete mais cette contition est variable du genre:

int a;
cout<<"donner age"<<endl;
cin>>a;
mysql_query(C.mysql, "SELECT * FROM client where age=...a....;");mon prob est dans cette ligne

Merci d'avance je compte sur vous :))

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
2 févr. 2011 à 10:30
* Évite les using namespace std, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
* if(C.connect("test")==true) s'écrit plus élégamment en: if(C.connect("test"))
* Les "system" sont à éviter comme la peste, ils brisent la portabilité.
* Utilise des std::string, au lieu des char* !
* Ceci:
cout<<"\n";
cout<<"\t        ************************************************          \n";
cout<<"\t        *                                              *          \n";
cout<<"\t        *  veuillez patienter pendant le chargement    *          \n";
cout<<"\t        *                                              *          \n";
cout<<"\t        ************************************************          \n";

devrait s'écrire:
std::cout <<
 <<"\n\t        ************************************************          \n"
 <<"\t        *                                              *          \n"
 <<"\t        *  veuillez patienter pendant le chargement    *          \n"
 <<"\t        *                                              *          \n"
 <<"\t        ************************************************          " << std::endl;


Pour résoudre ton problème, utilise un std::ostringstream:
// Pensez à inclure <sstream>
int a;
std::cout << "donner age" << std::endl;
std::cin >> a;
std::ostringstream query;
query << "SELECT * FROM client where age= " << a << ";";
mysql_query(C.mysql, query.str().c_str());


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
juliette666 Messages postés 2 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 15 février 2011
15 févr. 2011 à 12:04
dsl pour le retard
merciiii CptPingu pour ton aide, j'ai terminé mon mini projet et ça c'est tres bien passé pour ma soutenance :)))))
0
Rejoignez-nous