C++ et procédure stockées MySql

C++ et procédure stockées MySql - C++ - Programmation

Marsh Posté le 19-11-2013 à 17:05:33    

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 :
  1. cout << "avant connection" << endl;
  2.     MYSQL mysql;
  3. mysql_init(&mysql);
  4. mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option" );
  5. if(mysql_real_connect(&mysql,"10.129.1.242","gilles","gilles0310","test_c",0,NULL,0))
  6. {
  7.     cout << "connection ok" << endl;
  8.     //OK sans soucis
  9.     //mysql_query(&mysql,"insert into test (TEST_KEY1, TEST_KEY2, NOM, PRENOM) values (1,'WSSI00','Manouvrier','Gilles')" );
  10.     //OK sans soucis
  11.     //mysql_query(&mysql,"CALL AddRow(3,'mantouvrier','gl')" );
  12.    
  13.    
  14.    
  15.     //lecture complete
  16.     //sans soucis
  17.     //mysql_query(&mysql,"select * from test" );
  18.  
  19.    mysql_query(&mysql,"CALL test_c.GetRow('manouvrier')" );
  20.    
  21.     MYSQL_RES   *result   =  NULL;
  22.     MYSQL_ROW   row;
  23.     unsigned   int   i =  0;
  24.     unsigned   int   num_champs   =  0;
  25.    
  26.     //On   met   le   jeu   de  résultat   dans  le   pointeur   res
  27.     result   =  mysql_store_result(&mysql);
  28.    
  29.     //On   récupère le   nombre   de  champs
  30.     num_champs   = mysql_num_fields(result);//PLANTAGE!
  31.     cout << "nb champs " << num_champs << endl;
  32.     while ((row = mysql_fetch_row(result)))
  33.     {
  34.         unsigned long *lengths;
  35.         lengths = mysql_fetch_lengths(result);
  36.         for(i = 0; i < num_champs; i++)
  37.         {
  38.             printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL" );
  39.         }
  40.         printf("\n" );
  41.     }
  42.     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

Reply

Marsh Posté le 19-11-2013 à 17:05:33   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed