Envoyé par
7Ayoub
Bonjour,
j'ai modifié le message d'erreur et ça donne ça :
java.lang.ArrayIndexOutOfBoundsException: 2
at Fenetre.<init>(Fenetre.java:28)
at Fenetre.main(Fenetre.java:45)
je sais pas exactement ce que ça veut dire, je suis encore débutant en java..
comme quoi, la stack trace était plus qu'utile, voire indispensable.
ce n'est pas du tout une erreur my-sql mais une erreur d'index de cellules de tableau
voilà l'extrait de code ou sa plante
1 2 3 4 5 6 7
| Object[][] data = new Object [2][2];
l = 1;
while(res.next()) {
data[l][1] = res.getString(1);
System.out.print(data[l][1]);
data[l][2]= res.getString(2);
System.out.print(data[l][2]); |
quand on créé un tableau, on indique le nombre de cellule entre crochet, par exemple :
ici on crée 2 cellules
les indexes de ces cellules sont 0 et 1 : en java les index de tableau vont de 0 à n exclus, n étant le nombre de cellules
donc quand tu écris :
data[l][2]= res.getString(2);
tu essayes de mettre la deuxième colonne de ton résultat dans la troisième colonne de ton tableau qui en a que deux... ce qui génère l'exception ArrayIndexOutOfBoundsException (soit indice de tableau en dehors des bornes...)
le code correct est donc :
1 2 3 4 5 6 7
| Object[][] data = new Object [2][2];
l = 0;
while(res.next()) {
data[l][0] = res.getString(1);
System.out.print(data[l][0]);
data[l][1]= res.getString(2);
System.out.print(data[l][1]); |
rien à voir avec le problème, mais tu devrais par ailleurs déclarer tes variables locales dans les blocks qui les utilisent, comme par exemple l :
1 2 3 4 5 6 7
| Object[][] data = new Object [2][2];
int l = 0;
while(res.next()) {
data[l][0] = res.getString(1);
System.out.print(data[l][0]);
data[l][1]= res.getString(2);
System.out.print(data[l][1]); |
d'ailleurs tu devrais éviter d'utiliser l : on le confont très facilement avec 1 et parfois ça peut vraiment géner la lecture du code, en particulier quand on cherche pourquoi il marche pas...
Partager