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

NetBeans Java Discussion :

Remplir des JTextField à partir d'une requête SQL


Sujet :

NetBeans Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Remplir des JTextField à partir d'une requête SQL
    bonjour,
    je suis entrain de developpée un mini-projet sous netbeans(java) avec une base de données (oracle 10g), j'ai deux jframe ou dams la 1ere jframe jai un jtextfield et un bouton ,lors de la clic sur le bouton jaurais l'affichage de la 2eme jframe qui contient 5 jtextfield et un tableau .
    mon probleme c'est que je n'ai pas arrivé a remplir mes jtextfield malgre que jai essayé par deux methode mais les deux ne fonctionnent plus .SVP aider moi
    voici mon code:
    la 1ere methode:
    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
      try
            {   
                System.out.println("la requete");
                 String queryString1 = "SELECT ncin,nom,prenom,profession,n_cnss FROM employe WEHERE ncin="+alpha+"";
                 System.out.println(queryString1);
                  Statement stm1 = con.createStatement();
                  ResultSet rst1 = stm1.executeQuery(queryString1);
           //ResultSetMetaData rsMd1=rst1.getMetaData();
          while(rst1.next())
          {
          this.jTextField2.setText(rst1.getString("ncin"));
          this.jTextField3.setText(rst1.getString("nom"));
          this.jTextField4.setText(rst1.getString("prenom"));
          this.jTextField5.setText(rst1.getString("profession"));
          this.jTextField6.setText(rst1.getString("n_cnss"));
          }
      catch (SQLException e){
    		e.printStackTrace();
    	}
    la 2eme methode:
    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
     
    String queryString1 = "SELECT ncin FROM employe WEHERE ncin="+alpha+"";
                  Statement stm1 = con.createStatement();
                  ResultSet rst1 = stm1.executeQuery(queryString1);
                  while(rst1.next())
                  {jTextField2.setText(rst1.getString("ncin"));}
          /////////////////////////
                 String queryString2 = "SELECT nom  FROM employe WEHERE ncin="+alpha+"";
                  Statement stm2 = con.createStatement();
                  ResultSet rst2 = stm2.executeQuery(queryString2);
                  while(rst2.next())
                  {jTextField3.setText(rst2.getString("nom"));}
                  //////////////////////////////////
                   String queryString3 = "SELECT prenom FROM employe WEHERE ncin="+alpha+"";
                  Statement stm3 = con.createStatement();
                  ResultSet rst3 = stm3.executeQuery(queryString3);
                  while(rst3.next())
                  {jTextField4.setText(rst3.getString("prenom"));}
                  /////////////////////////
                   String queryString4 = "SELECT profession FROM employe WEHERE ncin="+alpha+"";
                  Statement stm4 = con.createStatement();
                  ResultSet rst4 = stm4.executeQuery(queryString4);
                  while(rst4.next())
                  {jTextField5.setText(rst4.getString("profession"));}
                  //////////////////////////
                   String queryString5 = "SELECT n_cnss FROM employe WEHERE ncin="+alpha+"";
                  Statement stm5 = con.createStatement();
                  ResultSet rst5 = stm5.executeQuery(queryString5);
                  while(rst5.next())
                  {jTextField6.setText(rst5.getString("n_cnss"));}

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour la seconde méthode, oublie : elle ne fait que faire une requête par champ, ce qui complique inutilement ton programme. Il n'y a pas de raison de faire plusieurs requêtes.

    Qu'est-ce qui te fait dire que ta première méthode ne fonctionne pas ? As-tu une erreur (et laquelle) ou les champs restent-ils vides et tu n'as pas d'erreur ?

    Quel est le type du champ ncin ? A ce sujet, tu devrais t'orienter plutôt vers un PreparedStatement, ce qui te feras gagner au moins la problématique de gestion d'éventuelles quote autour de la valeur de ncin.

    Par ailleurs, si tu ajoutes une trace dans le while :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(rst1.next())
          {
    System.out.println("Ligne " + rst1.getString("ncin"));
    /* ... */
     
    }
    Vois-tu cette trace ? Sinon, que vois-tu ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    salut,
    oui les champs restent vides , en principe après l'exécution de la requête j aurai la résultat dans les jtextfields
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while(rst1.next())
          {
    System.out.println("Ligne " + rst1.getString("ncin"));
    /* ... */
     
    }
    ça va me donner la resultat dans le console et moi je le vais dans mon interface (le jframe)

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nouna10 Voir le message
    ça va me donner la resultat dans le console et moi je le vais dans mon interface (le jframe)
    Le but étant de vérifier que tu as bien un résultat dans ta requête (si ça t'affiche dans ta console, mais que tes champs restent vides, le problème ne vient pas de la requête). Alors, est-ce que ça s'affiche dans la console ou pas ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    non la requete ne fonctionne plus et voila l'erreur
    java.sql.SQLException: ORA-00933: la commande SQL ne se termine pas correctement

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu avais commencé par ça, déjà, on aurait moins perdu de temps. C'est sûr que s'il y a une erreur lors de l'exécution de la requête, tu ne risques pas d'avoir des valeurs dans les champs.

    Donc je repose ma question déjà posée : quel est le type de ncin ? (je peux déduire que c'est du varchar ou du genre parce que tu fais un getString() pour récupérer sa valeur, mais je veux être sûr de son type db).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    le type de "ncin" est number et jai deja pensé a ca et jai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.jTextField2.setText(rst1.getInt("ncin"));
    mais ca m'a donné une erreur :Int cannot be converted to string
    c'est pour cela jai changé le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.jTextField2.setText(rst1.getString("ncin"));

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Et bien, non.

    Si la valeur est de type int, il faut la récupérer sous forme d'int, avec rst1.getInt("ncin"). Puis la convertir en String :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.jTextField2.setText(  String.valueOf( rst1.getInt("ncin") ) );

    Mais ça n'explique pas l'erreur lors de l'exécution de la requête.

    cependant, je viens de voir en relisant ta requête que tu as un E inséré entre le W et le H dans WEHERE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ncin,nom,prenom,profession,n_cnss FROM employe WEHERE ncin="+alpha+"";
    C'est bien sûr WHERE et pas WEHERE.

    Si cette insertion est due à une erreur de copie dans la discussion, donne moi le message d'erreur ORACLE complet.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    merci pour votre aide ca fonctionne tres bien maintenant
    jai une autre probleme dans la mem jframe jai un tableau ou je lai rempli a partir dune requete ou la table contient 8 colonnes et ca fonctionne tres bien mais le probleme c'est que je veux afficher 5 colonnes seulement de la table.
    voila le code que je lai inséré pour afficher toute la table
    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
     
       String queryString = "SELECT * FROM salaire";
          Statement stm = con.createStatement();
          ResultSet rst = stm.executeQuery(queryString);
          ResultSetMetaData rsMd=rst.getMetaData();
         // int nbrecolum=rsMd.getColumnCount();
          //System.out.println(nbrecolum);
          DefaultTableModel modelo=new DefaultTableModel();
          this.tableau.setModel(modelo);
          for(int x=1;x<=8;x++)
          {
            modelo.addColumn(rsMd.getColumnLabel(x));
          }
          while(rst.next())
          {
          Object[] filla=new Object[8];
          for(int y=0;y<8;y++)
          {
              filla[y]=rst.getObject(y+1);
     
          }
          modelo.addRow(filla);
          }
          }
     
      catch (SQLException e){
    		e.printStackTrace();
    	}
    donc jai essayé d'afficher seulement les 5 derniere colonnes
    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
     
     String queryString = "SELECT * FROM salaire";
          Statement stm = con.createStatement();
          ResultSet rst = stm.executeQuery(queryString);
          ResultSetMetaData rsMd=rst.getMetaData();
         // int nbrecolum=rsMd.getColumnCount();
          //System.out.println(nbrecolum);
          DefaultTableModel modelo=new DefaultTableModel();
          this.tableau.setModel(modelo);
    //pour mafficher les nom des colonnes (nbre des heures,prix dheure,nbre/h/supp/,prixh/supp,avance) ça fonctionne très bien
          for(int x=4;x<=8;x++)
          {
            modelo.addColumn(rsMd.getColumnLabel(x));
          }
    //pour remplir les valeurs: le problème ici j'aurais soit des valeurs  ne sont pas dans leurs vrais emplacement soit des colonnes vides
          while(rst.next())
          {
          Object[] filla=new Object[8];
          for(int y=4;y<8;y++)
          {
              filla[y]=rst.getObject(y+1);
     
          }
          modelo.addRow(filla);
          }
          }

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il faut que le tableau que tu utilises pour tes lignes fasse aussi 5 cases.

    Tu as laissé Object[] filla=new Object[8];, fais Object[] filla=new Object[5];Sinon, puisque tu ne gères que 5 colonnes, tu peux aussi faire que ta requête ne ramène que 5 colonne (en indiquant les noms des colonnes au lieu de *) dans le SELECT. Ensuite, tu peux récupérer le nombre de colonnes par resultSet.getMetaData().getColumnCount(), ce qui t'évitera d'avoir en dur le nombre de colonnes et de faire des for de 4 à 8... (code plus simple = moins de problèmes, avec les indices et bornes de boucles ici en particuliers d'ailleurs, il y a un problème dans ta boucle : tu ne récupères que 4 colonnes)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    merciiiiiiiiiiiiiiiii bcp pour votre aide ça marche très bien maintenant

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

Discussions similaires

  1. [AC-2010] Impossible de remplir des champs à partir d'une requête sélection
    Par xdevel dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 12/10/2014, 16h27
  2. Réponses: 2
    Dernier message: 22/12/2009, 17h35
  3. Réponses: 2
    Dernier message: 28/08/2006, 09h09
  4. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 17h29
  5. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 16h46

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