rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Probleme JComboBox bdd

gg, le jeudi 10 janvier 2008 à 12:44:30
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!
Configuration: Windows XP
Internet Explorer 7.0
Répondre à gg  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kij_82, le jeudi 10 janvier 2008 à 14:17:38
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));
} 


~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
Répondre à kij_82

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gg, le jeudi 10 janvier 2008 à 14:32:44
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!
Répondre à gg

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kij_82, le jeudi 10 janvier 2008 à 14:44:21
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.


~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
Répondre à kij_82

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gg, le jeudi 10 janvier 2008 à 14:47:57
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
Répondre à gg

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 kij_82, le jeudi 10 janvier 2008 à 15:34:30
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));
} 


~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
Répondre à kij_82