Erreur code java

cs_Erwan76 Messages postés 29 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 2 avril 2007 - 13 févr. 2007 à 10:27
cs_Erwan76 Messages postés 29 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 2 avril 2007 - 14 févr. 2007 à 10:48
bonjour a tous,

je suis débutant en java et je rencontre un probleme lors de son éxécution.
j'essaie de récupérer un champs d'une base de donnée MySql et de l'afficher dans une jlist
Mon code est le suivant (je vous mets le plus importan):

   private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        TriParNom();
    }
    

    private void TriParNom() {
       
        int i=0;
        DefaultListModel Liste=new DefaultListModel();
   
     
    void Connexion(); 
          try {
          
                while(i<10){
                    recordBD=sqlBD.executeQuery("SELECT Nom FROM tabetu;");
                    Liste.addElement(recordBD.getString(3));
                    jList1.setModel(Liste);
                    recordBD.next();                   
                    i++;
                }
               
                sqlBD.close();
 }

Merci de votre aide...

5 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
13 févr. 2007 à 15:03
http://java.developpez.com/faq/jdbc/
Je suis pas sur de comprendre ton code, surtout dans la partie while i < 10 ou tu lances 10 fois un requete. Dans ton resultat de requete tu va avoir plusieurs resultats c'est dans ces resultats qu'il faut itérer. (cf resultset)
++
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
14 févr. 2007 à 09:12
On est pas très avancé de savoir qu'il y a un problème si on sait pas lequel :/


Sinon, le fait de faire 10 fois la requete dans ton while va faire que
tu vas recuperer 10 fois le 3ème attribut du premier tuple récuperé,
étant donné qu'en dépit d'un next() à la fin de ton while, tu
réaffectes à ton ResultSet une valeur.


Donc, si le but est de recuperer le 3ème attribut des 10 premiers tuples dans ta liste et de l'afficher ensuite :

void Connexion(); 

          try {

              recordBD=sqlBD.executeQuery("SELECT Nom FROM tabetu;");
                while(i<10){

                   
Liste.addElement(recordBD.getString(3));

                  
recordBD.next();                   


                    i++;

                }

               
jList1.setModel(Liste);

                sqlBD.close();

             }

             catch (SQLException sqle) {

               
        
System.out.println(sqle.getMessage());

             }

 }


Sinon, petit conseil : évite les majuscules en début de nom de
variable/méthode, ça peut preter à confusion avec des noms de classe
parfois et ça peut vite devenir galère pour s'y retrouver. N'oublie pas non plus le catch après ton try.


Et si j'ai répondu à coté, donne plus de détails sur le problème
0
cs_Erwan76 Messages postés 29 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 2 avril 2007
14 févr. 2007 à 09:22
Désolé, c'est vrai que je n'étais pas très explicite. Je recommence et  j'ai aussi effectuer quelque changements.
Je souhaite récupérer des données d'une base mySQL et les afficher ou fur et a mesure dans une jlist.
Par exemple, un affichage de tous les "noms" que la base contient.

Voici le code:

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                          


       int i=0;
       DefaultListModel Liste=new DefaultListModel();
       
        connexion();
       
        try {
                 while(i<10)
                {
                    recordBD=sqlBD.executeQuery("SELECT Nom FROM tabetu;");
                    Liste.addElement(recordBD.getString(3));
                    jList1.setModel(Liste);
                    recordBD.next();                   
                    i++;
                }
                       
           
                sqlBD.close();
  }
  
                catch (SQLException s) {
   jTextField1.setText("Erreur SQL :" + s.toString() + "(" + s.getErrorCode() + ")");
   }
  catch (Exception e) {
   jTextField1.setText("Erreur :" + e.toString() + "(" + e.getMessage() + ")"); 
   }
    }                                         
   
    void connexion(){
            try {
  Class.forName("com.mysql.jdbc.Driver");  // Déclaration du connecteur
  connectBD = DriverManager.getConnection("jdbc:mysql://localhost:3306/absences","root",""); // Connexion à la base
  }
  
            catch (SQLException s) {
  jTextField1.setText("Erreur SQL :" + s.toString() + "(" + s.getErrorCode() + ")");
  }
            catch (Exception e) {
  jTextField1.setText("Erreur :" + e.toString() + "(" + e.getMessage() + ")"); 
  }
    }

le message d'erreur est : Erreur :java.lang.NullPointerException(null)
je ne comprend pas car je pense que çà devrait être bon.
Merci pour votre aide.
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
14 févr. 2007 à 09:33
C'est sur quel morceau du code que t'as un nullpointer ?


try/catch le blog qui lève l'exception et affiche le message lié à celle ci, ça t'aidera.


Personnellement, je pencherait pour un next de trop, étant donné que tu ne peux être certain d'avoir 10 resultats à ta requête.


Pour l'affichage au fur à mesure, ça sert à rien dans le sens où ça va
aller tellement vite que de toute façon tu verra pas la différence avec
un global. Auquel cas, je te renvoie au bout de code que j'ai corrigé
plus haut.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Erwan76 Messages postés 29 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 2 avril 2007
14 févr. 2007 à 10:48
mon code fonctionne. j'ai trouvé la solution.
Je voudrai vous demander quel ligne de code permet d'afficher une ligne entière (récupéré de la base ex:request * from ...) dans un jlist.
actullement, je ne parviens qu'a récupérer plusieurs champs mais ne me l'affiche pas sur la même ligne, mais en colonne:

par exemeple,ca me donne:
nom
prénom
age

et j'aurai voulu:  nom   premom   age
sur la meme ligne.

J'ai essayer getArray mais çà ne fonctionne pas.
Merci pour votre aide car je sais que mes explications sont difficiles à comprendre.
0
Rejoignez-nous