Probleme JComboBox bdd

gg -  
kij_82 Messages postés 4260 Statut Contributeur -
Bonjour,je developpe en java avec eclipse en relation avec une base de donnée mysql contenant une table joueur(numeroJoueur,pseudo)
clé primaire : numeroJoueur

Je souhaite crée une JComboBox contenant tout les pseudos de ma table joueur.
La connection marche , seulement je recontre un message d'erreur:

Erreur lors de la connexion : java.sql.SQLException: Column Index out of range ( 0 > 1).

voici mon code :

try {
Class.forName("com.mysql.jdbc.Driver") ;
}
catch(ClassNotFoundException f) {
System.err.println(" Erreur de chargement du driver : "+ f) ;
}
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/Yams","root","");
Statement statement = conn.createStatement() ;
String req = "SELECT pseudo FROM joueur";
ResultSet res = statement.executeQuery(req);
//on place l'indice i de la creation de la comboBox au premier élément
int i = 0;
while(res.next())
{
choixPseudo.addItem(res.getString(i));
i++;

}

conn.close() ;
}
catch(SQLException sqle) {
System.err.println(" Erreur lors de la connexion : " + sqle) ;
}

}


Le probleme vient donc de l'indice , seulement je ne vois pas pourquoi!
Merci d'avance!

5 réponses

kij_82 Messages postés 4260 Statut Contributeur 857
 
Attention !

Quand tu fais ca :
 choixPseudo.addItem(res.getString(i)); 


GetString c'est pour prendre un champ dans la ligne courante de ton resultSet (res)
Dans ta requete SQL tu sélectionne uniquement le pseudo, il n'y a donc qu'un seul champ / ligne de résultat. Or ton i est incrémenté pour chaque ligne retrouvée, ce qui fait qu'à l'affichage du deuxieme résultat, i vaut 1, et tu essaye de récupérer le champ à la place 1 du resultSet alors qu'il n'a que le chmap à l'indice 0 de valide.
D'ou ton message d'erreur.

Modification à apporter :
 while(res.next())
{
choixPseudo.addItem(res.getString(0));
} 

0
gg
 
Merci pour ta réponse , seulement j'ai toujours le meme probleme lorsque je lance mon programme :

Erreur lors de la connexion : java.sql.SQLException: Column Index out of range ( 0 > 1).

Le code avec ta modification :

try {
Class.forName("com.mysql.jdbc.Driver") ;
}
catch(ClassNotFoundException f) {
System.err.println(" Erreur de chargement du driver : "+ f) ;
}
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/Yams","root","");
Statement statement = conn.createStatement() ;
String req = "SELECT pseudo FROM joueur";
ResultSet res = statement.executeQuery(req);
while(res.next())
{
choixPseudo.addItem(res.getString(0));


}

conn.close() ;
}
catch(SQLException sqle) {
System.err.println(" Erreur lors de la connexion : " + sqle) ;
}

}

Je continue de chercher!
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
essaye avec 1 au lieu de 0 alors ?
Il est possible que l'indexation commence à 1 au lieu de 0 pour les resultSet, je ne sais plus.

0
gg
 
Je venais d'essayer seulement après j'ai une erreur d'un autre type :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Graphique.pseudo(Graphique.java:457)
at Graphique$GererBouton.actionPerformed(Graphique.java:507)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


Une erreur de pointeur : pointeur null
0

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

Posez votre question
kij_82 Messages postés 4260 Statut Contributeur 857
 
Cette erreur a lieu ailleurs que dans le code que tu as donné plus haut.

A quoi correspond cette fonction : Graphique.pseudo(Graphique.java:457)

Peux-tu indiquer à quel ligne de code correspond la ligne 457.

Typiquement null pointer exception signifie qu'une de tes variable est nulle et que tu tente de l'utiliser (invoquer une fonction de sa classe à partir d'elle même par exemple).

Sinon j'ajouterai une sécurité dans ton script plus haut, à savoir tester si ton resultSet est null ou non :

 ResultSet res = statement.executeQuery(req);
//on place l'indice i de la creation de la comboBox au premier élément
if ( res == null )
    return;

while(res.next() l)
    choixPseudo.addItem(res.getString(1));
} 

0