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

AWT/Swing Java Discussion :

récupération d'un contenu d'un texte de saisie


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut récupération d'un contenu d'un texte de saisie
    Bonjour,

    Dans une classe java appelée entrée_MDP(pot de passe), je propose à un utilisateur de saisir son nom dans un Textfield.

    Ce nom doit ensuite être inséré dans une table "Identification"dansune base de données Access, dans le cham Nom .

    J'ai crée la connexion à la base de données mais je ne sais comment récupérer le contenu du textfield saisi par l'utilisateur.

    Voici le code utilisé:

    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
    77
    78
    79
    80
     
     
    package TP_ENIGME;
    import java.sql.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class Entree_MDP extends JDialog implements ActionListener {
     
      private JPanel p2;
      private JTextField TF_MDP;
      private JLabel LAB_MDP;
      private JButton b2;
      private Dimension Dim1;
     
      public Entree_MDP() {
        setTitle("Entree Nom utilisateur");
        setResizable(false); //un utilisateur ne peut pas modifier la taille
        // du Jdialog-Le JTextField garde alors les mêmes dimensions
        /*this.getContentPane().setLayout(new FlowLayout());*/
        p2 = new JPanel();
        TF_MDP = new JTextField();
        Dim1 = new Dimension(200, 20);
        TF_MDP.setPreferredSize(Dim1); //pour qu'on ne puisse pas également changer les dimensions du TextField
        LAB_MDP = new JLabel("Veuillez entrer votre nom d'utilisateur");
        b2 = new JButton("CONTINUER");
        b2.addActionListener(this);
        this.getContentPane().add(LAB_MDP, "North");
        this.getContentPane().add(TF_MDP, "Center");
        this.getContentPane().add(b2, "South");
        this.show();
     
     
         setVisible(true);
        try {
     
         	String requete = "insert Nom into Identification";
            Connection connexionSQL = Connexion_BDD.getConnexion().getConnexionSQL();
            System.out.println("la connexion est " + connexionSQL); 
            System.out.println(connexionSQL.isClosed());
            Statement stmt = connexionSQL.createStatement();
            System.out.println(requete);
            ResultSet rs = stmt.executeQuery(requete); 
     
     
         }
        catch ( Exception sqle) {System.out.println("SQL Error pendant la connection:" + sqle.getMessage());
     
        }// fin de catch
     
     
      } //fin du constructeur
     
         //connexionSQL.close();
     
     
     
      public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == b2) {
          BouttonAction2();
     
        }
      } // fin de méthode actionPerformed
     
      public void BouttonAction2() {
        Entree_jeu EJ1 = new Entree_jeu();
        EJ1.show();
        this.setVisible(false);
      } // fin de méthode BouttonAction2
     
      public static void main(String arg[]) {
        Entree_MDP MDP1 = new Entree_MDP();
        MDP1.pack();
        MDP1.setVisible(true);
     
      }
     
    }fin de classe Entree_MDP
    Si vous pouviez m'aider sur ce point dce serait très gentil à vous.

    Merci encore de votre aide.

    Cordialement.
    Nathalie

    } // fin de classe Entree_MDP

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    pour récupérer le contenu d'un JTextField, il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String s = monJTextField.getText();

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut récupération du conten u d'un textfield
    Merci de ton aide!

    J'avais déjà fait cela bien que cela n'apparaisse pas dans le code, le problème est au niveau de la requête sql, comment exprimer le conte u de du textfield pour qu'il s'insère dans le champ "Nom".

    Merci beaucoup à toi de ton aide.

    Cordialement.
    Nathalie

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    alors en sql, la requête devrait ressembler à cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String query = "INSERT INTO Identification VALUES('', '"+TF_MDP.getText()+"')";
    mais je ne suis pas très sûr de la syntaxe exacte à utiliser avec access
    la première valeur est vide, car tu utilises certainement une clé primaire automatique comme premier champ non ?


  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Dans ce cas là ce serait plutôt quelquechose dans ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String query = "INSERT INTO identification (Nom) VALUES ('"+TF_MDP.getText()+"');";
    Ou encore mieux en passant par un PreparedStatement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String query = "INSERT INTO identification (Nom) VALUES (?);";
    PreparedStatement psmt = connectionSQL.prepareStatement(query);
    psmt.setString(1,TF_MDP.getText());
    psmt.execute();
    ++

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut récupération d'un contenu d'un texte de saisie
    Bonjour,



    Et merci beaucoup de votre aide.

    Pourriez vous m'expliquer ce que fait le prepared statement.
    Je suis désolée mais je n'ai pas pris la peine de chercher par moi même, notamment ccette partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    PreparedStatement psmt = connectionSQL.prepareStatement(query); 
    psmt.setString(1,TF_MDP.getText()); // à quoi correspond le 1
    psmt.execute();

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    en fait le 1 correspond au premier ? dans la chaine de requete, si il y a plusieurs ? ils seront donc numéroté de 1 à n.
    Le gros avantage d'un prepared statement et d'éclaircir le code et de ne plus avoir à gérer les quotes autour des chaines ou dates et pas autours des valeurs numériques...........

    Donc dans le cas présent on affecte la valeur de TF_MDP au premier et seul point d'interrogation.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut récupération d'un contenu d'un texte de saisie
    Bonjour,

    Le ? correspond il à un caractère ou à une chaîne de caractères?

    sinon, j'ai testé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Code: 
    String query = "INSERT INTO Identification (Nom_utilisateur) VALUES ('"+TF_MDP.getText()+"');";
    Il se trouve que suite à cette partie de code, je vois bien ecrit le texte de la requête avec le récupération du contenu du textbox, mais rien ne se passe au niveau de la base de données!!(aucune insertion);
    voici le message reçu:


    INSERT INTO Identification(Nom_utilisateur) VALUES ('harbonne');
    SQL Error pendant la connection:[Microsoft][Pilote ODBC Microsoft Access] L'instruction INSERT INTO contient le nom de champ inconnu suivant : 'Nom_utilisateur'. Assurez-vous que vous avez correctement saisi le nom, puis recommencez l'opération.




    Je dois préciser que
    1-le premier champ de la table Identification est bien un numéro qui s'incrémente automatiquement et qui est une clé primaire
    2-peut être est il bien de reprendre la même requête en utilisant le ? et en tenant compte qu'il y a un premier champ qui doit s'incrémenter automatiquement.

    Merci beaucoup à vous de votre aide.

    cordialement.

    Nathalie

    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
     
    try { 
     
            String requete = "insert into Identification(Nom_utilisateur) values ('"+TF_MDP.getText()+"'); 
            Connection connexionSQL = Connexion_BDD.getConnexion().getConnexionSQL(); 
            System.out.println("la connexion est " + connexionSQL); 
            System.out.println(connexionSQL.isClosed()); 
            Statement stmt = connexionSQL.createStatement(); 
            System.out.println(requete); 
            ResultSet rs = stmt.executeQuery(requete); 
     
     
         } 
        catch ( Exception sqle) {System.out.println("SQL Error pendant la connection:" + sqle.getMessage()); 
     
        }// fin de catch

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut récupération d'un contenu d'un texte de saisie
    Rebonjour,

    Je viens d'arranger une chose; en fait la base de données vers laquelle je pointais n'était pas la bonne (erreur de chemin),; je viens d'arranger cela mais maintenant j'ai le message suivant :



    INSERT INTO Identification(Nom_utilisateur) VALUES ('harbonne')
    SQL Error pendant la connection:No ResultSet was produced


    pourriez vous me dire où il y a paroblème?

    merci beaucoup à vous.

    Cordialement.

    Nathalie

  10. #10
    Membre éprouvé Avatar de yakanet
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    oui pour une requete d'insertion c'est un updateQuery qu'il faut faire, car là ta requete ne renvoi rien, tu n'aura rien du tout dans ton resultset.
    ExecuteQuery n'est que pour les requetes de type select.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut récupération d'un contenu d'un texte de saisie
    Bonjour et merci,
    Je reçois le message suivant :



    The method updateQuery is undifined for the type statement


    Que me conseilles tu donc pour remplir le result set avec un update query?

    J'ai utilisé ce code qui fonctionne très bien mais n'utilise pas updatequery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    String query = "INSERT INTO identification (Nom) VALUES (?);"; 
    PreparedStatement psmt = connectionSQL.prepareStatement(query); 
    psmt.setString(1,TF_MDP.getText()); 
    psmt.execute();
    Cordialement.
    Nathalie

  12. #12
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tout à fait normal car c'est un executeUpdate et non un updateQuery qu'il faut effectuer

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/10/2009, 13h32
  2. Réponses: 4
    Dernier message: 01/11/2006, 00h35
  3. Mettre a jour le contenu d'un texte area coté serveur
    Par cellestion dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2006, 10h46
  4. copier le contenu d'un text vers un tableau
    Par brahim999 dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/06/2006, 17h40
  5. Réponses: 2
    Dernier message: 20/02/2004, 08h47

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