Bonjour,
Je suis sur le développement d’un logiciel libre destiné à la compression en masse.
J’ai développé une partie du programme en C, avec la lib mysql sans trop de problème, cependant je dois m’attaquer maintenant à la partie C++ avec mysql++, et n’ayant pas fait de C++ depuis longtemps j’ai un peu du mal B)
[codebox] // Connect to the sample database.
mysqlpp::Connection con(false);
con.connect(« test », « localhost », « toto », « toto »);
if (!con)
{
cerr << "Database connection failed: " << con.error() << endl;
return 1;
}[/codebox]
La connexion à la base se déroule bien, c’est apparement ma création de requete qui merde :
[codebox]mysqlpp::Query query = con.query();
query << « SELECT * FROM slave »;
mysqlpp::Result res = query.store();
cout << « We have: » << endl;
if (res) {
char buf[100];
mysqlpp::Row row;
mysqlpp::Row::size_type i;
for (i = 0; row = res.at(i); ++i) {
cout << ‹ \t › << row.at(0) << endl;
// cout << ‹ \t › << strncpy(buf, row.at(0), sizeof(buf)) << endl;
}
}
else {
cerr << "Failed to get item list: " << query.error() << endl;
return 1;
}
[/codebox]
Le code comme ca, il marque le We have, la premiere valeur du champ de la table, et apres SegFault…
Si je commente le premier cout et décommente le second, il seg fault après le We have :
Résultat, compilé avec ou sans efence :
[codebox] Electric Fence 2.1 Copyright © 1987-1998 Bruce Perens.
We have:
127.0.0.1
Segmentation fault
[/codebox]
et si je commente tout à partir du if (res) :
[codebox] Electric Fence 2.1 Copyright © 1987-1998 Bruce Perens.
We have:
ElectricFence Aborting: free(804d294): address not from malloc().
Illegal instruction
[/codebox]
et sans efence :
[codebox]We have:
*** glibc detected *** free(): invalid pointer: 0x0804de0c ***
Aborted
[/codebox]
Si quelqu’un a une idée, ou si vous pensez que j’ai pu oublier quelque chose, je suis preneur de toute idée, parce que j’ai un peu beaucoup de mal à me remettre au C++ après toutes ces années sans B)
Bon sur ce, je vais m’installer sur ce forum, ca va m’occuper
Merci d’avance