Bonjour à tous !

J'ai intégrer une petite base de donnée à mon programme, celle-ci fonctionne, je parviens à m'y connecter, à y rechercher une information et à ajouter des informations mais il semble y avoir un étrange problème lorsqu'on change la manière de créer un string pour mysql_query().

en image: http://img443.imageshack.us/img443/4219/bugbo.png

ou

Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
std::string SqlManager::commandInsertCharacter(const sf::String& characterName, const unsigned int& idLogin)
{
    std::ostringstream id;
    id<<idLogin;
    sf::String sfstr(id.str());
 
    std::string str;
    str+=("INSERT INTO `game`.`characters` (`id`, `name`, `creation`, `login`) VALUES (NULL, '");
    str+=characterName.toAnsiString();
    str+="', '";
    //str+=getDate(); //-----------BUG
    str+="2013-02-01"; //-----------FONCTIONNE
    str+=" ";
    //str+=this->getTime(); //-----------BUG
    str+="03:03:02"; //-----------FONCTIONNE
    str+="', '";
    str+=sfstr.toAnsiString();
    str+="')";
    return str;
}
 
std::string SqlManager::getDate()
{
    return "2013-02-01";
}
 
std::string SqlManager::getTime()
 
{
    return "03:03:02";
}
 
std::string str= commandInsertCharacter(characterName, idLogin);
std::cout<<str<<std::endl;
if(!mysql_query(&mysql, str.c_str())){
   std::cout<<"AFFECTED"<<std::endl;
}
else{
   std::cout<<"MANGE DES CHIPS"<<std::endl;
}


Lorsque je lance mon programme il plante lorsque j'utilise soit getDate() soit getTime() soit les deux. Alors qu'ils ne font que retourner exactement le même string que si je ne les appellais pas.

Mon programme n'affiche alors que:

std::cout<<str<<std::endl;
mais pas le
"AFFECTED" ni "MANGE DES CHIPS" vu qu'il plante sur la condition.

mais ne plante pas et ajoute correctement ce que je demande si je n'appel pas les fonctions.



Une erreur de conversion lors d'un return ?

Merci, je ne parviens pas à comprendre =(