Requête MySQL en C

Résolu
tomtom1305 Messages postés 11 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 14 février 2013 - 18 juin 2012 à 11:14
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 18 juin 2012 à 15:47
Bonjour,

Alors voici le pourquoi du comment que ça se fait que je poste un message ici.

En se moment, je programme un logiciel qui va récupérer les données hardwares du PC et les insérer dans une base de donnée distante centralisé.

jarrive a récuperer les données hardware via le module WMI de windows.
j'arrive a me connecté à la base de données distante.

Mais..... le soucis que j'ai c'est que je n'arrive pas a inserer les données récupérer....


 while (pEnumerator)
        {
            pEnumerator->Next(WBEM_INFINITE, 1,&pclsObj, &uReturn);

            if(0 == uReturn)break;

            VARIANT vtProp;
string Processus[2];
//nom
Processus[0] = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
            fprintf(fichier," %S",nb++%2==1?"\n":"\n",vtProp.bstrVal,"\n");

            //CommandLine
            Processus[1] = pclsObj->Get(L"CommandLine", 0, &vtProp, 0, 0);
pclsObj->Get(L"CommandLine", 0, &vtProp, 0, 0); 
            fprintf(fichier,"  %S	\n",vtProp.bstrVal,"\n");
mysql_query(conn,"INSERT INTO Processus(Name,Command) VALUES ('"Processus[0]"','"Processus[1]"')");

                                                 
            VariantClear(&vtProp);
            pclsObj->Release();
        }



au début j'inséré les donnée récupérer dans un fichiers. ( je l'ai laisser pour l'instant en cas de secours)
le probleme vien de cette ligne

mysql_query(conn,"INSERT INTO Processus(Name,Command) VALUES ('"Processus[0]"','"Processus[1]"')");



Comment puis-je inserer une variable dans une table mysql...?

s'il vous plait,

cordialement,


tomtom1305

3 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
18 juin 2012 à 11:44
Bonjour.

Sans avoir, testé quoi que ce soit, ceci me paraît étrange:
"INSERT INTO Processus(Name,Command) VALUES ('"Processus[0]"','"Processus[1]"')");


Tu devrais normalement construire une chaîne à l'aide de strcat ou alors en utilisant un bon vieux "sprintf".
Je dirais que quelque chose ressemblant à ceci, devrait fonctionner:
char buff[256];
sprintf(buff, "INSERT INTO Processus(Name, Command) VALUES ('%s', '%s')", Processus[0], Processus[1]);


________________________________________________________________________
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
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
18 juin 2012 à 15:47
mais il plante arrivé a cette étape...

À part sortir ma boule de cristal, je ne peux rien faire :p
Plus sérieusement, si tu ne donnes pas détails (que vois tu quand tu passes le programme au débuggeur, isolation de la ligne qui déconne, etc...), je ne pourrais pas t'aider.

D'ailleurs si c'est du C++:
1) Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
2) Tu peux carrément utiliser:

std::ostrinstream buff;
buff << "INSERT INTO Processus(Name, Command) VALUES ('" << Processus[0] << "', '" << Processus[1] << "')";
mysql_query(conn, buff.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
3
tomtom1305 Messages postés 11 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 14 février 2013
18 juin 2012 à 15:03
bonjour,

j'ai essayé ce que vous m'avez posté:
char buff[256];
sprintf(buff, "INSERT INTO Processus(Name, Command) VALUES ('%s', '%s')", Processus[0], Processus[1]);


le programme compile bien =)..

mais il plante arrivé a cette étape...

je ne comprend pas pourquoi xd...

pour info: j'utilise Visual Studio 2008; je code en C/C++.

cordialement.


...:::tomtom1305:::...
0
Rejoignez-nous