Rechercher : dans
Par :

Prob avec ResultSet en java

Dernière réponse le 20 aoû 2008 à 11:29:05 brain2005, le 19 aoû 2008 à 19:28:03 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « prob avec ResultSet en java » dans :
Java - L'API JDBC Voir Introduction à JDBC La technologie JDBC (Java DataBase Connectivity) est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de bases de données (SGBD). L'accès aux bases de données avec...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Logiciel libre] Installation firefox 2.0+java+flash VoirInstallation firefox 2.0+java+flash en ligne de commande A. INTRODUCTION B. INSTALLATION FIREFOX 1. Création d'environnement 2. Téléchargement et vérification de la signature 3. Installation de Firefox 4. Démarrage de l'application C....
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...

1

sandul, le 19 aoû 2008 à 20:21:41

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

Répondre à sandul

2

brain2005, le 20 aoû 2008 à 09:52:44

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

Répondre à brain2005

3

sandul, le 20 aoû 2008 à 10:01:25
  • +1

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)); 
}


++

Répondre à sandul

4

brain2005, le 20 aoû 2008 à 10:21:01

Oui c la valeur de SelectBox qui n'est pas bonne

je vous remercie beaucoup sandul

Répondre à brain2005

5

 kij_82, le 20 aoû 2008 à 11:29:05
  • +1

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.

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

Répondre à kij_82