Création
d'entreprise
Posez votre question Signaler

Prob avec ResultSet en java [Résolu]

brain2005 28Messages postés 1 août 2008Date d'inscription - Dernière réponse le 20 août 2008 à 11:29
Bonjour,
ResultSet rs2 =
stmt.executeQuery("SELECT * FROM VWPARAMLOT WHERE LOT = '"+SelectBox+"'");
rs2.next();
// je veux ici recuperer la valeur de la 1ère colonne et c à ce niveau que l'erreur apparait
System.out.println(rs2.getDouble(1));
le message qui apparait:
Exception in thread "main" java.sql.SQLException: Index de colonne non valide
Lire la suite 

Prob avec ResultSet en java »

5 réponses
Réponse
+1
moins plus
Hello again,

1. il faut t'assurer que le resultset est alimenté (tu fais des getXX() sur le ResultSet uniquement si next() retourne true:
ResultSet rs2 = stmt.executeQuery("SELECT * FROM VWPARAMLOT WHERE LOT = '"+SelectBox+"'");

while(rs2.next()) {
  // je veux ici recuperer la valeur de la 1ère colonne et c à ce niveau que l'erreur apparait
  System.out.println(rs2.getDouble(1)); 
}


Dans un autre ordre d'idées, si le result set est alimenté, il n'est pas normal de ne rien avoir à la position 1; toutefois, une bonne pratique est de ne PAS utiliser les indices mais les noms des colonnes <== comme ça si jamais tu changes l'ordre SQL (genre select autre chose à la place de *, ou bien si ta table est réorganisée et ta première colonne passe en troisième position...) tes getXX() resteront OK. De plus, utiliser un getDouble("ma_colonne") peut afficher plus d'informations que getDouble(1) à partir d'une certaine version d'Oracle (9i).

Ciao
brain2005- 20 août 2008 à 09:52
Salut,

le probleme que j'ai 1 seule ligne ds la table VWPARAMLOT et le rs2.next() donne false pk je sais pas

c quoi la solution et merci pour tout sandul
Ajouter un commentaire
Réponse
+1
moins plus
Ben, c'est simple: next() retourne false car ta clause WHERE n'est pas ce que tu attends, probablement. Pour t'en convaincre, modifie le code comme ceci (ou passe en mode debug pour consulter la valeur du String que tu passes à stmt.executeQuery())

String sqlStr = "SELECT * FROM VWPARAMLOT WHERE LOT = '"+SelectBox+"'";
// ici tu auras à la console la commande SQL avec la clause WHERE
// probablement c'est la valeur de SelectBox qui n'est pas bonne 
System.out.println(sqlStr); 

ResultSet rs2 = stmt.executeQuery(sqlStr);

while(rs2.next()) {
  // je veux ici recuperer la valeur de la 1ère colonne et c à ce niveau que l'erreur apparait
  System.out.println(rs2.getDouble(1)); 
}


++
brain2005- 20 août 2008 à 10:21
oui c la valeur de SelectBox qui n'est pas bonne

je vous remercie beaucoup sandul
kij_82- 20 août 2008 à 11:29
Bonjour,

Pour rapport, on n'oublie pas de cocher le status de la discussion en "résolu" (l'option se situe en haut à droite de la discussion) lorsque le problème est résolu. Merci.
Ajouter un commentaire
Ce document intitulé « prob avec ResultSet en java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?