Bonjour tout le monde,
je suis entrain de développe un programme en c++ avec visual studio 2003 qui doit crée des objets, je récupéré les valeurs des variables des objets dans une base de donnée mysql.
mon programme arrive a ce connecte a la base, il récupéré les données sans problème apparent.
Mais dans une des méthodes j'utilise la valeur d'un résultat d'une des requête que j'affecte a un int, et j'utilise cette variable pour crée une seconde requête. le problème est que la valeur que je récupéré est sous la forme "0x00000001" pour une valeur dans la table égale a "1".
et l’exécution de mon programme s’arrete et visuall me renvoi le message suivant :
"Exception non gérée à 0x58b387b8 dans test.exe:0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xccccd07c."
donc ma question est comment je peut faire pour modifie la représentation d'un int de la forme "0x00000001" on une représentation simple '1".
voici la méthode en question :
la variable qui me pose problème et Matiere_Id que j'utilise dans la deuxième requête.
(désolé, je sais que mon code n'est pas optimal mais j'essaye d’arrivé a un résultat c tout)
Code C/C++ :
void CConnexion::Remp_Course_Class()
{
MYSQL_RES *res, *res1;
MYSQL_FIELD *fd, *fd1;
UINT num_fields, num_fields1;
MYSQL_ROW row, row1;
UINT i = 0;
UINT j = 0;
UINT k = 0;
int nb_seance1,nb_seance2;
nb_seance1=0;
nb_seance2=0;
int CourseClass_Id=0;
int ID=0;
int Class_Id, Matiere_Id, Prof_Id, duree, nb_h_total, nb_h_groupe, nb_h_lab, nb_h_max, nb_h_min, priorite,
periode_prefere;
bool CourseClass_Lab;
time_t CourseClass_modifie_le;
CString CourseClass_modifie_par;
if (IsConnected)
{
if (( mysql_query(myData, "SELECT * FROM matiere_classe") == 0))
{
res = mysql_store_result(myData);
num_fields = mysql_num_fields(res);
fd = mysql_fetch_fields(res);
while ( (row = mysql_fetch_row(res)))
{
for (j = 0; j < num_fields; j++)
{
switch ( j )
{
case 0 :
break;
case 1 :
Class_Id = atoi(row[j]);
break;
case 2 :
{
Matiere_Id = atoi(row[j]);
break;
}
case 3 :
Prof_Id = atoi(row[j]);
break;
case 4 :
{
CString temp = row[j];
CourseClass_Lab = (temp=='1');
break;
}
case 5 :
CourseClass_modifie_le = atol(row[j]);
break;
case 6 :
CourseClass_modifie_par = row[j];
break;
default:
break;
}
}
if (( mysql_query(myData1, "SELECT * FROM matiere WHERE ID=Matiere_Id") == 0))
{
res1 = mysql_store_result(myData1);
num_fields1 = mysql_num_fields(res1);
fd1 = mysql_fetch_fields(res1);
row1 = mysql_fetch_row(res1);
for (k = 0; k < num_fields; k++)
{
switch ( k )
{
case 5 :
nb_h_total = atoi(row1[k]);
break;
case 6 :
nb_h_groupe = atoi(row1[k]);
break;
case 7 :
nb_h_lab = atoi(row1[k]);
break;
case 8 :
nb_h_max = atoi(row1[k]);
break;
case 9 :
nb_h_min = atoi(row1[k]);
break;
case 10 :
priorite = atoi(row1[k]);
break;
case 11 :
periode_prefere = atoi(row1[k]);
break;
default:
break;
}
CourseClass* tmp_CourseClass = new CourseClass(ID, Class_Id, Matiere_Id, Prof_Id,
CourseClass_Lab, duree, nb_h_total, nb_h_groupe, nb_h_max, nb_h_min, priorite,
periode_prefere, CourseClass_modifie_le, CourseClass_modifie_par);
_courseClasses.push_back( tmp_CourseClass );
}
mysql_free_result(res);
}
}
}
else // Something went wrong
{
fprintf (stderr,"Error mysql_errno" , mysql_error (myData));
}
}
else // Something went wrong
{
fprintf (stderr,"Error mysql_errno" , mysql_error (myData));
}
}
Merci beaucoup pour votre aide