Probleme JComboBox bdd
gg
-
kij_82 Messages postés 4260 Statut Contributeur -
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!
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
Attention !
Quand tu fais ca :
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 :
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));
}
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!
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!
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.
Il est possible que l'indexation commence à 1 au lieu de 0 pour les resultSet, je ne sais plus.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :
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));
}