IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

[ResultSet] = une seule et unique récupération ?


Sujet :

JDBC Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut [ResultSet] = une seule et unique récupération ?
    Bonjour bonjour!!

    Petit problème qui me bloque depuis 2 jours

    La situation rapidement:
    Fenetre de création de personnages, qui me permet de créer un perso (si, si!), puis les renseignements correspondants dans une BD acess.

    Une fois le perso créé, j'arrive sur la page de séléction de personnage. Ici, petite boucle, qui pour chaque ligne dans ma table PERSONNAGE, me créé un bouton et l'inscrit sur ma fenêtre.

    Ma classe des boutons utilisés :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class BoutonPerso extends JButton {
     
    		private String imageBtnPerso;
    		private String classeBtnPerso;
    		private String pseudoBtnPerso;
     
    	public BoutonPerso(String texteBtnPerso, String imageBtnPerso,String classeBtnPerso, String pseudoBtnPerso) {
    		super();
    		this.setText(texteBtnPerso) ;
    		this.imageBtnPerso = imageBtnPerso;
    		this.classeBtnPerso = classeBtnPerso;
    		this.pseudoBtnPerso = pseudoBtnPerso;
    		}
     
    	}


    Je fait ma requète pour voir combien il y a de personnages afin de créer mes boutons.Et c'est la qu'est le souci.

    Je récupère la valeur du bouton(this.setText):
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    resultatString  = resultat.getString("classePerso") + "  " + resultat.getString("pseudoPerso") ;
    Mes autres variables du constructeur sont initialisées à "".
    Donc tous tous mes boutons sont crées, affichés la ou il fallait… bref tout bien.

    Sauf que si je veux récupérer en même temps le pseudo, ou l'image, ou la classe avec :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pseudoP = resultat.getString("pseudoPerso");
    	classeP= resultat.getString("classePerso");
    	imageP= resultat.getString("imagePerso");

    Et que je les inscits dans le constructeur, de MEME MANIERE que la valeur du bouton (resultatString ), ça plante!


    Conclusion : j'ai le droit à une seule et unique ligne de récupération du résultat de ma requète.

    Plus d'1, et ça plante... quelqu'un sait pourquoi?

  2. #2
    Membre chevronné Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Par défaut
    Ca plante : Quel est le message exact ?

    Je suppose que tu parse ton ResultSet avec resultat.next().

    Si tu code est tu type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    resutat.next();
    ...
    reultat.getString();
    .....
    resutat.next();
    .....
    reultat.getString();
    Le deuxième getString() ne fonctionnera pas si tu veux toujours lire la même ligne que le premier.

    Tu peux utiliser les méthodes previous() ou first() avant te faire ton deuxième getString().

    Un peu plus de code pour confirmer tout cela serait le bien venu.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut
    Coucou!!
    Excuse moi, voila le code en question:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    bdAmbre.ouverture();
     
    				String requeteSelect = "SELECT * FROM PERSONNAGE ";
    				ResultSet resultat ;
    				String resultatString="";
    				String pseudoP = "";
    				String classeP = "";
    				String imageP = "";
    				int hauteureListe = 50;
    				nbPersos = 0;
     
     
    				try {
    					resultat = bdAmbre.selectSQL(requeteSelect);
     
     
    					while(resultat.next()){
     
    						nbPersos = nbPersos + 1;
     
    						//Mon problème : obligation de choisir une ligne! Impossible de mettre els 4 :((
     
    						//pseudoP = resultat.getString("pseudoPerso");
    						//classeP = resultat.getString("classePerso");
    						//imageP = resultat.getString("imagePerso");
     
    						resultatString  = resultat.getString("classePerso" ) + "  " + resultat.getString("pseudoPerso") ;


    Je suis donc coincé la...
    Il ne peut apparement pas récupérer plus d'une info...
    J'ai donc un plantage direct, et la page de séléction des personnage ne s'affiche plus.

    Une idée?

  4. #4
    Membre chevronné Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Par défaut
    Je veux bien aussi le code du catch. Appelles-tu Exception.getMessage() ou Exception.printStackTrace() pour récupérer le message d'erreur ?

    Celui-ci m'intéresse aussi.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut
    Coucou!

    J'appellais le e.printStackTrace();
    Voila ce que ça me balance, lorsque je met récupère plusieurs info du Resultset:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    java.sql.SQLException: No data found
    	at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
    	at metier.SelectPerso.initSelectPerso(SelectPerso.java:88)
    	at metier.SelectPerso.<init>(SelectPerso.java:40)
    	at metier.Fenetre.actionPerformed(Fenetre.java:91)
    	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)


    Le e.getMessage me sort:

    Je ne comprend pas pourquoi... je peux récupérer une donnée qui est trouvée sur une ligne... mais la ligne d'après, pour la mettre dans une autre variable, il ne la trouve plus!

  6. #6
    Membre chevronné Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Par défaut
    Bizarre effectivement !!

    Puisque cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultatString  = resultat.getString("classePerso" ) + "  " + resultat.getString("pseudoPerso") ;
    Cela devrait fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pseudoP = resultat.getString("pseudoPerso");
    classeP = resultat.getString("classePerso");
    Le problème peut venir de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imageP = resultat.getString("imagePerso");
    Peux-tu juste mettre cette ligne en commentaire ? Comment est typée ta colonne imagePerso dans ta table ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut
    Coucou!!

    Avec
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pseudoP = resultat.getString("pseudoPerso");
    classeP = resultat.getString("classePerso");
    //imageP = resultat.getString("imagePerso");
     
    resultatString  = resultat.getString("classePerso" ) + "  " + resultat.getString("pseudoPerso") ;

    >>>>> No data found :p

    Sur papier, no problème pour récupérer de cette façon les infos du ResultatSet dans plusieurs variables?

    Quant à ma base, les trois champs sont de type Text!
    Par contre, dans image j'ai du texte style sjkdsdfs.png

    C'est ce " . " qui pourrait le stresser?

  8. #8
    Membre chevronné Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Par défaut
    Là, je suis à court d'idées.

    Mais je continue ma réflexion.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut
    Hu Okay!!

    Merci quand même de ta disponibilité

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut
    Hi!

    Tu avais raison, le probleme venait de :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    imageP = resultat.getString("imagePerso");

    Certe c'était du Text... mais de forme "blabla.png"...

    Apparement, ça devait le gêner...


    Bref j'ai simplement viré cette variable du constructeur, et remplacer par les getString... et ça marche :p

    Merci !!!

  11. #11
    Membre chevronné Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Par défaut
    Bizarre quand même !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Agréger des données en une seule et unique requête
    Par Jolt0x dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/07/2014, 13h51
  2. Redirection en HTTPS pour une seule page uniquement
    Par Sebphilou68 dans le forum Apache
    Réponses: 9
    Dernier message: 10/09/2012, 21h30
  3. Réponses: 3
    Dernier message: 29/01/2010, 15h22
  4. Une seule et unique connexion distante
    Par Pingouin22 dans le forum Réseau
    Réponses: 2
    Dernier message: 01/06/2008, 09h29
  5. Lancer un et un seul thread unique dans une application web
    Par rach375 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 22/09/2006, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo