gmanouvrier1 | Bonjour,
Aprés avoir installé la libmysql j'ai tenté 2, 3 tests de codes pour écrire et lire des données en provenance de mysql(en C++)
Pas de soucis jusque là.
J'ai appelé une procédure stockée sans résultats attendu (genre une procedure qui ajoute des infos en base sans rien retournée), pas de soucis.
Lorsque j'invoque une procédure stockée qui doit me retourner des informations, le programme plante :
Code :
- cout << "avant connection" << endl;
- MYSQL mysql;
- mysql_init(&mysql);
- mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option" );
- if(mysql_real_connect(&mysql,"10.129.1.242","gilles","gilles0310","test_c",0,NULL,0))
- {
- cout << "connection ok" << endl;
- //OK sans soucis
- //mysql_query(&mysql,"insert into test (TEST_KEY1, TEST_KEY2, NOM, PRENOM) values (1,'WSSI00','Manouvrier','Gilles')" );
- //OK sans soucis
- //mysql_query(&mysql,"CALL AddRow(3,'mantouvrier','gl')" );
-
-
-
- //lecture complete
- //sans soucis
- //mysql_query(&mysql,"select * from test" );
-
- mysql_query(&mysql,"CALL test_c.GetRow('manouvrier')" );
-
- MYSQL_RES *result = NULL;
- MYSQL_ROW row;
- unsigned int i = 0;
- unsigned int num_champs = 0;
-
- //On met le jeu de résultat dans le pointeur res
- result = mysql_store_result(&mysql);
-
- //On récupère le nombre de champs
- num_champs = mysql_num_fields(result);//PLANTAGE!
- cout << "nb champs " << num_champs << endl;
- while ((row = mysql_fetch_row(result)))
- {
- unsigned long *lengths;
- lengths = mysql_fetch_lengths(result);
- for(i = 0; i < num_champs; i++)
- {
- printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL" );
- }
- printf("\n" );
- }
- mysql_close(&mysql);
|
Dès que j'essaye d'accéder au données retournées, ça plante.(Le programme a cessé de fonctionner)
J'en déduit que ma manière d'invoquer la procedure est mauvaise.
J'ai voulu d'installer la lib mysql++ mais visiblement le lien était mort.
Je ne vois donc que la libmysql 'traditionnelle'.
(j'utilise Dev-cpp pour développer sous windows et Geany sous linux)
Pourriez vous me mettre sur la bonne voie?
Merci à tous.
Gilles
|