Prob avec ResultSet en java

Résolu
brain2005 Messages postés 32 Statut Membre -  
kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   -
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
Configuration: Windows XP
Firefox 3.0.1

2 réponses

  1. sandul Messages postés 4013 Statut Membre 723
     
    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
    1
    1. brain2005 Messages postés 32 Statut Membre
       
      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
      0
  2. sandul Messages postés 4013 Statut Membre 723
     
    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)); 
    }
    


    ++
    1
    1. brain2005 Messages postés 32 Statut Membre
       
      oui c la valeur de SelectBox qui n'est pas bonne

      je vous remercie beaucoup sandul
      0
      1. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857 > brain2005 Messages postés 32 Statut Membre
         
        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.
        0