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 :

Remplir plusieurs JTextField avec les résultats d'une seule requête SQL


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut Remplir plusieurs JTextField avec les résultats d'une seule requête SQL
    Je voudrai remplir plusieurs JTextfields avec les résultats d'une seule requete sql.

    Ma requete est : select * from table
    Le résultat de ma requête me donne les colonnes "Items" et "Mois" :

    Item | Mois

    alpha | 1
    beta | 2
    delta | 3
    gamma | 4

    Maintenant, j'ai 4 JTextfields Janvier, fevrier, mars, avril. Et je souhaiterai que la valeur de item pour le mois 1 aille dans janvier, la valeur de item pour le mois 2 aille dans fevrier etc...

    Ma question est: Comment à partir d'une requête sql remplir d'un coup les 4 JTextfields au lieu de faire 4 requêtes avec des "where Mois = " qui prend plus de temps à être compilé.

    Voici un début de code. Merci pour votre aide.

    Code : 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
     
    String ec = "select * from table";
     
     
     
    					try {
     
    					Statement stmt_ec = conn.createStatement();
     
    					ResultSet rs_ec = stmt_ec.executeQuery(ec);
     
     
    					while (rs_ec.next()) {
     
    						// remplissage ???
     
    					}

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Un petit tour ici te permettra de voir comment extraire les données de ta requête. Après tu pourras les afficher dans des JTextField sans problème.

    Cdt.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    Quel partie exactement, je suis un peu confus !!!

  4. #4
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Salut !

    Dans la requête ajouter "order by Mois" ?

  5. #5
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par lemzo84 Voir le message
    Quel partie exactement, je suis un peu confus !!!
    Partie 6
    Tout est marqué dedans avec du code à l'appuie.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    Salut, j'avais mis le post en résolu mais après lecture du tuto, je n'arrive pas à écrire le code qui est bon. Pourriez vous m'aider svp ?
    (On suppose que mes JTextfields se nomment jt1, jt2, jt3 et jt4.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    En fait, ce n'est pas possible.
    Après recherche, il faut uniquement résonner en terme de colonnes.

  8. #8
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par lemzo84 Voir le message
    En fait, ce n'est pas possible.
    Après recherche, il faut uniquement résonner en terme de colonnes.
    Moi je pense que si

    Je reprends le cours

    Les méthodes getXXX() permettent d'extraire les données selon leur type spécifié par XXX tel que getString(), getDouble(), getInteger(), etc ... . Il existe deux formes de ces méthodes : indiquer le numéro de la colonne en paramètre (en commençant par 1) ou indiquer le nom de la colonne en paramètre. La première méthode est plus efficace mais peut générer plus d'erreurs à l'exécution notamment si la structure de la table évolue.
    Si on modifie un peu le code

    Code : 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
    35
    36
    37
    38
    39
    40
    41
    42
     
          //creation et execution de la requete
          requete = "SELECT * FROM table";
     
          try {
             Statement stmt = con.createStatement();
             résultats = stmt.executeQuery(requete);
          } catch (SQLException e) {
             arret("Anomalie lors de l'execution de la requête");
          }
     
          //parcours des données retournées
     
          try {
             boolean encore = résultats.next();
     
             while (encore) {
                // Tu peux  récupèrer les données de cette manière étant donné que tu connais la structure de ta table
                remplirMonTextField(resultats.getInteger("Mois"), resultats.getString("Item");  
                encore = résultats.next();
             }
     
             résultats.close();
          } catch (SQLException e) {
             arret(e.getMessage());
          }
     
     
    // J'ai sorti le traitement de la boucle pour plus de lisibilité du code
    public void remplirMonTextField(int mois, String value)
    {
    switch(mois)
    {
        case 1 : jt1.setText(value);// Je remplie mon champ
            break;
        case 2 : // pareil
            break;
        case 3 : // ainsi dessuite jusqu'à la fin
            break;
    }
     
    }

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    Bonjour Nico02,

    J'ai essayé ta solution mais ça ne passe pas. Aurais-tu une autre idée stp ???

  10. #10
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Quelle est ton erreur ? Peux tu nous donner la StackTrace ?

    Cdt.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    Bjr,

    En fait, ça tourne depuis plus d'une heure et les JTextfields ne sont pas remplis !

  12. #12
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Il doit être bloqué dans la boucle. Affiche nous le code stp

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    Voici le code et merci encore pour ton aide.

    Code : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    				Object agencys = agence.getSelectedItem();
    				Object agency = new DecimalFormat("#####").format(Double.parseDouble(agencys.toString()));
    				//System.out.println(agency);
    				Object years = annee.getSelectedItem();
    				Object year = new DecimalFormat("#####").format(Double.parseDouble(years.toString()));
     
    				Connection conn = ConnectionManager.getInstance().getConnection();
     
     
    String sql_jan_ec ="SELECT MOIS, ROUND(sum(debitxof)) AS ecjan  FROM Encours_Moyens WHERE RC in (201210) AND AGENCE = ? AND ANNEE = ? GROUP BY MOIS";
     
    				try {
     
    					PreparedStatement stmt_ec_jan = conn.prepareStatement(sql_jan_ec);
     
    					stmt_ec_jan.setObject(1, agency);
    					stmt_ec_jan.setObject(2, year);
     
    					ResultSet rs_ec_jan = stmt_ec_jan.executeQuery();
     
     
    					boolean encore = rs_ec_jan.next();
    					while (encore) {	
     
    						//new StringFM(rs_ec_jan.getString("ecjan"),ec_jan);
     
    			            FillField(rs_ec_jan.getInt("MOIS"), rs_ec_jan.getString("ecjan"));  
    			            encore = rs_ec_jan.next();
     
    					}
     
    					/*******************************************/
     
     
    				} catch (Exception e) {
     
    					ConnectionManager.getInstance().close();
     
    				}
     
    			JOptionPane.showMessageDialog(null, "Process terminé avec succès !");
     
    			}
     
    			private void FillField(int mois, String value) {
     
    				switch(mois)
    				{
    				case 1 : ec_jan.setText(value);// Je remplie mon champ
    				break;
    				case 2 : ec_fev.setText(value);
    				break;
    				case 3 : ec_mar.setText(value);
    				break;
    				case 4 : ec_avr.setText(value);
    				break;
    				case 5 : ec_mai.setText(value);
    				break;
    				case 6 : ec_jui.setText(value);
    				break;
    				case 7 : ec_juil.setText(value);
    				break;
    				case 8 : ec_aou.setText(value);
    				break;
    				case 9 : ec_sep.setText(value);
    				break;
    				case 10 : ec_oct.setText(value);
    				break;
    				case 11 : ec_nov.setText(value);
    				break;
    				case 12 : ec_dec.setText(value);
    				break;
    				}
     
    			}

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    boolean encore = rs_ec_jan.next();
    					while (encore) {
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while (rs_ec_jan.next()){
    ...
    A+.

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    Cette modif ne change rien !!!

  16. #16
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Essaie directement la requête dans la base pour voir s'il retourne de résultat.

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    J'ai essayé dans access et ça passe sans souci !

  18. #18
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Met un break point au niveau de ton executeQuery() pour voir ce qu'il se passe ensuite (voir surtout si il reste dans la boucle ou si ça merde après).

  19. #19
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bizare
    Tu utilises la clause in or que tu n'as qu'une seule valeur.
    Remplace le type de agency et year par String et utilise setString pour le preparedStatement en suite lance en mode debug pour voir ses valeurs si elles sont bonnes.

    A+.

  20. #20
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    Salut,

    Finalement ça marche, il fallait juste enlever le "encore = résultats.next();" dans la boucle while et en plus j'avais un problème de cache. En fermant et en réouvrant eclipse, tout est rentré dans l'ordre.

    Merci infiniment.

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

Discussions similaires

  1. [XL-2010] Remplir un tableau avec les résultats d'une fonction
    Par lotfidk dans le forum Excel
    Réponses: 3
    Dernier message: 10/04/2015, 07h34
  2. [MySQL] Remplir une liste déroulante avec les résultats d'une fonction
    Par Anibel dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 29/10/2013, 11h39
  3. remplir une fichier excel avec les résultats d'une requete
    Par cyclopsnet dans le forum Documents
    Réponses: 2
    Dernier message: 13/08/2009, 11h22
  4. remplir un model avec les valeurs d'une JList
    Par soujava dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 15/05/2008, 21h11
  5. problème avec les résultats d'une requête select top1
    Par kariiim dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/03/2007, 15h05

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