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 =(
Partager