bonjour, je crée une liste ou je récupère des donné d'un BD
si je clique sur la liste, et j'affiche dans les case les informations pour la référence cliqué
puis je peux modifier, supprimer ou vider les cases pour ajouter une nouvelle ligne
normalement après chaque modification, ajout, suppression, il rerempli la liste pour voir les modification
cette ligne de rafraichissement de liste, je la met dans un bouton de rafraichissement séparé qui ne contient que ça
si j'appuie sur le bouton "rafraichissement", je rerempli la liste
j'ai ajouté une donné
j'ai rafraichi, ça apparait
maintenant, je sélection dans la liste un élément
et je reclique sur le bouton de rafraichissement
il effectue le rafraichissement
et au retour de la variable contenuliste, il me mes ce message d'erreur dans le terminal :
"org.postgresql.util.PSQLException : le ResultSet n'est pas positionné correctement, vous pouvez peut-être appeler next()."
puis si je reclique à nouveau sur rafraichissement, le message n'apparait plus
et si je resselectionne quelque chose et que je rafraichi à nouveau, il rafraichi et me remet un message d'erreur
je me rend compte du moment ou l'erreur apparait en posant des balise au niveau des code de l'affichage de la liste et je suis l'avancé avec le débogueur :
le message est expédié, passe dans tout le code, ressort correctement, revient à l'expéditeur et là seulement il y a un message d'erreur.
et je ne voie vraiment pas d'où ça peut venir
voici les différente parti du code :
.l'affichage de la liste :
..appel initiale (FenetreBD) :
private JList liste = new JList(bd_dialogue.afficher());
..appel de rafraichissement (FenetreBD) :
liste.setListData(bd_dialogue.afficher());
..traitement des requêtes d'appel (DialogueBD) :
1 2 3 4 5 6 7 8 9 10 11
| Vector afficher (){
java.util.Vector<String> contenuliste = new java.util.Vector<String>();
try {
ResultSet réponse_aff = requete.executeQuery("select refpro from produit");
while (réponse_aff.next()) {
contenuliste.add(réponse_aff.getString("refpro"));
}
} catch(Exception e){System.out.println(e);}
System.out.println(contenuliste);
return contenuliste;
} |
.la sélection dans la liste :
..appel de la sélection (FenetreBD) :
1 2 3 4 5 6 7 8 9 10 11 12
| liste.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
refpro = (String)liste.getSelectedValue();
Object[] tableau = bd_dialogue.select(refpro);
npro = (String)tableau[0];
case_col2.setText((String)tableau[1]);
case_col3.setText((String)tableau[2]);
case_col4.setText((String)tableau[3]);
case_col5.setText((String)tableau[4]);
}
}); |
..traitement de la requête d'appel (DialogueBD) :
1 2 3 4 5 6 7 8 9 10 11 12 13
| Object[] select (String refpro){
Object[] tableau = new Object[5];
try {
ResultSet réponse = requete.executeQuery("select npro, refpro, libelle, prix, qstock from produit where refpro like '" + refpro + "'");
réponse.next();
tableau[0] = réponse.getString("npro");
tableau[1] = réponse.getString("refpro");
tableau[2] = réponse.getString("libelle");
tableau[3] = réponse.getString("prix");
tableau[4] = réponse.getString("qstock");
} catch(Exception e){System.out.println(e);}
return tableau;
} |
on dirait que chaque fois que je passe dans le code "traitement de la requête d'appel (DialogueBD)", il se passe un truc qui crée une erreur pour le rafraichissement
si vous souhaiter l'intégralité du code, n'hésitez pas à demander
en espérant que quelqu'un saura m'aider
bonne soirée
Partager