Bonjour,
Je suis actuellement en train de corriger un programmes en C++, et malheureusement pour moi, mes souvenirs concernant ce langage,
sont très lointains. C'est pour cela, que je me tourne vers vous.
Je rencontre un problème avec le gestion des resultSet avec OCCI.
La requête doit retourner une dizaine de lignes, chacune composé d'un entier et d'un string.
Pour chaque ligne récupéré on récupère les deux données afin de creer un objet. La champ string est convertit en char*.
voici un bout de code simplifié :
J'ai mis en place un fichier txt, dans lequel j'affiche l'ensemble des données récupérées via la requête. Je m'aperçois qu'il y a un seul passe dans la boucle après le programme plante.
Code : 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 Colonne *colonne; // .... Statement* requete = con->createStatement("//la requete"); ResultSet* resultatRequete = requete->executeQuery(); while (resultatRequete->next()) { int numero = rs->getInt(1); string titre = rs->getString(2); colonne = new Colonne(); colonne->setNumero(numero); int taille = titre.size()+1; char * buffer = new char[taille]; strncpy(buffer,titre.c_str(),taille); colonne->setTitre(buffer); // traitement delete [] buffer; }
Il semblerait qu'il y ai un problème avec la récupération de l'élément String dans le resultSet.J'ai testé en ne récupérant pas celui-ci, et dans le fichier txt, j'ai bien les dix lignes qui s'affichent (avec juste les numéros). Le programme ne plante pas.
J'utilisa Oracle 10.2, la version de compilateur est la 4.1.2 (Red hat 4.1.2).
Partager