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 :

Enregistrer la valeur d un champ MS Access dans un jTextField


Sujet :

JDBC Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut Enregistrer la valeur d un champ MS Access dans un jTextField
    Bonjour,

    J'essaye de mettre le nom d'un membre du personnel dans JtxtNomPrenom dont le matricule correspond à jTxtMatr. Le nom se trouve dans la colonne 3 et a comme nom intitule "Nom "de ma table access. Rien ne se passe au niveau println.
    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
    18
    19
    20
    21
    22
    23
    24
    private void jTxtMatrActionPerformed(ActionEvent e) {
     
     try{
     
    String sql1 = "SELECT * FROM Signaletique";// WHERE Matricule =?";
     
     
    ps = conn.prepareStatement(sql1);
    ps.setString(3, jTxtNomPrenom.getText());
    rs = ps.executeQuery();
             System.out.println("Nom rs" + jTxtNomPrenom);  
             System.out.println("Nom 0.1" + "Nom"); 
                while (rs.next()){
                //String NomPrenom = rs.getString(3);
                //jTxtNomPrenom.setText(rs.getString(3));
                jTxtNomPrenom.setText("Nom");
                System.out.println("Nom 1" + jTxtNomPrenom); 
                //rs.getString(3);
            }
        }    catch(SQLException ex) {
     
            JOptionPane.showMessageDialog(null, e);
        }
    }

  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,

    1. sql1 est égale à "SELECT Nom FROM Signaletique". Il n'y a donc aucun paramètre. Tu ne peux pas affecter un paramère de rang 3 donc, sans qu'il y ait une exception. Les paramètres dans un prepared statement sont sous la forme de ?. Par exemple : String sql1 = "SELECT Nom FROM Signaletique where id=?" (id est un exemple de nom de champ, ne connaissant pas ta structure). Et dans ce cas, il y a un seul paramètre, qui s'affectera donc par un ps.setString(1, valeur)
    2. Le code que tu nous montres ne compile probablement pas (la variable dans le catch est ex et tu utilises e comme nom de variable passée au JOptionPane
    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 habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut Inssrer la valeur d un champ acces dans un jTextField
    Chgt de titre.

    Sorry

  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
    C'est exactement la même problématique pour récupérer des valeurs dans le ResultSet : pour récupérer une colonne numéro 3, il faut qu'il y ait (au moins) trois colonnes. Ce que tu avais fait dans le code commenté : jTxtNomPrenom.setText(rs.getString(3));, si le type de la colonne est bien compatible avec une String.
    Maintenant, il faut également que
    1. le code ne plante pas avant l'exécution de la requête exception
    2. la requête ne plante pas lorsqu'elle s'exécute exception
    3. la requête retourne quelque chose (au moins un enregistrement) result set vide, donc on n'entre pas dans cette boucle : while (rs.next()){,

    Trois cas qui expliqueront qu'on n'exécute pas le System.out.println() donc que rien ne s'affiche.
    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 habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Bonsoir',

    Les connections se font.
    Ma Query en access (la meme qu en Jave) est OK.
    //jTxtNomPrenom.setText(rs.getString(3)); est reactive.
    Le JTxtField est de type caractere.
    Mais aucun resultat au niveau des println.


    Bref rien ne va

    Habiler.

  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
    Citation Envoyé par HABILER Voir le message
    Ma Query en access est OK.
    C'est à dire ? Elle affiche bien des résultats ?
    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 habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Non rien

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Voici le code utilise.

    Meme avec ume connection cela ne marche pas


    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
    private void jTxtMatrActionPerformed(ActionEvent e) {
        conn = Connect.ConnectDB();
     
     try{
     
    String sql1 = "SELECT * FROM Signaletique";// WHERE Matricule =?";
     
    System.out.println("String sql1 defini" );
     
    ps = conn.prepareStatement(sql1);
    ps.setString(3, jTxtNomPrenom.getText());
    rs = ps.executeQuery();
     
             System.out.println("Nom rs" + jTxtNomPrenom);  
             System.out.println("Nom 0.1" + "Nom"); 
     
                while (rs.next()){
                //String NomPrenom = rs.getString(3);
                jTxtNomPrenom.setText(rs.getString(3));
                jTxtNomPrenom.setText("Nom");
                System.out.println("Nom 1" + jTxtNomPrenom);
                System.out.println("Nom 1.1" + "Nom"); 
                //rs.getString(3);
            }
        }    catch(SQLException ex) {
     
            JOptionPane.showMessageDialog(null, e);
        }
    }

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Bonsoir,

    j ai reecrit mon code mais maintenant il m affiche une erreur "Feature not supported"
    entre I m here 1 et I m here 2.

    et lorsque je reactive statement stmt il refuse tout net

    Habiler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public final void FilljTxtNomPrenom() throws SQLException {
        affiche("i m here 1");
    //Statement stmt = conn.createStatement();
     ResultSet rs;  
     rs = ps.executeQuery("SELECT * FROM Signaletique WHERE Matricule = ?");
     affiche("i m here 2");
     rs.setString(1, jTxtNomPrenom.getText());
                 while ( rs.next() ) {
                    String jTxtNomPrenom  = rs.getString("Nom");
                    System.out.println(jTxtNomPrenom );
                }
    //            conn.close();
    
    }

  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
    La notation avec ? c'est pour un PreparedStatement. Tu ne peux pas exécuter une requête avec juste un ?, le sgbd ne comprends pas ce que ça veut dire.
    En plus, là tu affectes le paramètre sur le resultset : ça n'a aucun sens, le resultset c'est le résultat de la requête, donc c'est trop tard pour passer un paramètre.

    Tu le dis toi-même, au sujet du résultat de la requête sous Acces :
    Citation Envoyé par HABILER Voir le message
    Non rien
    Si la requête sous Access n'affiche rien, c'est qu'il n'y a rien dans la table, et donc tu auras un resultset vide sous Java (il n'y a pas de raison que des données apparaissent par miracle sous Java alors qu'il n'y en pas dans la table !), et donc on entrera pas dans le while, et donc le System.out.prinltn qui s'y trouve ne sera pas exécuté.

    PS : par ailleurs, il faut que tu penses à fermer tes ressources (le resultset, la connexion...)
    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 habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Bonjour a tous,

    Comment pourrais-je afficher le nom d un client dans JtxtMatr.
    La Connection DB est OK.
    Lorsque je mets in No a la place de ( LIKE " + "'" + j.TxtMatr + "'"); c est egalement ok
    Faut-il utilier la fct scanner scanner ?

    Merci pour votre aide>

    Habiler

    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
    public final void FilljTxtNomPrenom() throws SQLException {
         //    JTextField field;
     
     
    String sql1;
         sql1 = ("SELECT * FROM Signaletique WHERE Matricule LIKE " + "'" + jTxtMatr + "'");
     //    affiche("Etape 2");
    System.out.println(jTxtMatr);
    PreparedStatement ps1 = conn.prepareStatement(sql1);
     
     try {
     
     
      ResultSet rs1 = ps1.executeQuery();
     
                    while ( rs1.next() ) {
     
                   jTxtNomPrenom.setText(rs1.getString(3)+" "+rs1.getString(4));
     affiche("Etape 3");
     
    //System.out.println(rs1.getString(1) +"* \t** "+rs1.getString(2) + rs1.getString(3)+ rs1.getString(4));
            } 
    } 
     catch (SQLException e ) {
         }
             finally {
            if (rs1 != null) { rs1.close(); }
    }
    }
    {  
              JOptionPane.showMessageDialog(null, "Saved !!!!!");
         //       conn.close();
    }

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Bonjour a tous,

    Comment pourrais-je afficher le nom d un client dans JtxtNomPrenom dont le jTxtMatr correspond Matricule (2) dans la DB Access.
    La Connection DB est OK.
    Lorsque je mets in No a la place de ( LIKE " + "'" + j.TxtMatr + "'"); c est egalement ok
    Faut-il utilier la fct scanner scanner ?

    Merci pour votre aide>

    Habiler

    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
    public final void FilljTxtNomPrenom() throws SQLException {
         //    JTextField field;
     
     
    String sql1;
         sql1 = ("SELECT * FROM Signaletique WHERE Matricule LIKE " + "'" + jTxtMatr + "'");
     //    affiche("Etape 2");
    System.out.println(jTxtMatr);
    PreparedStatement ps1 = conn.prepareStatement(sql1);
     
     try {
     
     
      ResultSet rs1 = ps1.executeQuery();
     
                    while ( rs1.next() ) {
     
                   jTxtNomPrenom.setText(rs1.getString(3)+" "+rs1.getString(4));
     affiche("Etape 3");
     
    //System.out.println(rs1.getString(1) +"* \t** "+rs1.getString(2) + rs1.getString(3)+ rs1.getString(4));
            } 
    } 
     catch (SQLException e ) {
         }
             finally {
            if (rs1 != null) { rs1.close(); }
    }
    }
    {  
              JOptionPane.showMessageDialog(null, "Saved !!!!!");
         //       conn.close();
    }

  13. #13
    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
    Quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql1 = ("SELECT * FROM Signaletique WHERE Matricule LIKE " + "'" + jTxtMatr + "'");
    Tu concatènes la représentation String du JTextField, pas la valeur saisie dedans. Il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql1 = ("SELECT * FROM Signaletique WHERE Matricule LIKE " + "'" + jTxtMatr.getText() + "'");
    Mais la bonne manière de le faire, avec un PreparedStatement, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String sql1;
         sql1 = ("SELECT * FROM Signaletique WHERE Matricule LIKE ?");
    PreparedStatement ps1 = conn.prepareStatement(sql1);
    ps1.setString(1, jTxtMatr.getText() );
    Sinon, pourquoi utiliser un like ? Pour que ça fonctionne il faudrait qu'il y ait un % dans la saisie...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String sql1;
         sql1 = ("SELECT * FROM Signaletique WHERE Matricule = ?");
    PreparedStatement ps1 = conn.prepareStatement(sql1);
    ps1.setString(1, jTxtMatr.getText() );
    ou, pour chercher les éléments dont le matricule commence par la saisie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String sql1;
         sql1 = ("SELECT * FROM Signaletique WHERE Matricule LIKE ?");
    PreparedStatement ps1 = conn.prepareStatement(sql1);
    ps1.setString(1, jTxtMatr.getText()+"%" ); // recherche des éléments qui commence par la chaine saisie
    Mais avec un like, tu risques d'avoir plusieurs réponses dans le ResultSet, et avec un seul JTextField pour mettre une seule réponse donc, ce n'est pas très logique.
    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.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Bonjour a tous,

    J'ai adapte mon code mais à la place de nom prénom dans jTxtNomPrenom, j'ai une cellule vide. Par contre lorsque je remplace ? par in nombre le nom et prenom correpondant au numero s'affichent

    System.out.println(rs1); affiche null
    et
    (System.out.printlnr(s1.getString(1) +" \t "+rs1.getString(2) + rs1.getString(3)+ rs1.getString(4)); donne
    net.ucanaccess.jdbc.UcanaccessResultSet@78259df7
    Mon "nouveau" 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    public final void FilljTxtNomPrenom() throws SQLException {
     
     //  JTextField field;
     
        affiche("Etape 2");
     
        String sql1;
     
        sql1 = ("SELECT * FROM Signaletique WHERE Matricule = ?");
     
        PreparedStatement ps1 = conn.prepareStatement(sql1);
     
        ps1.setString(1, jTxtMatr.getText() );
     
        ps1.setString(1,jTxtMatr.getText()); // recherche des éléments qui commence par la chaine saisie
     
        System.out.println(rs1);
     
        try {
     
           ResultSet rs1 = ps1.executeQuery();
     
          System.out.println(rs1);
     
           while ( rs1.next() ) {
     
               jTxtNomPrenom.setText(rs1.getString(3)+" "+rs1.getString(4));
     
               affiche("Etape 3");
     
               System.out.println(rs1.getString(1) +"  \t   "+rs1.getString(2) + rs1.getString(3)+ rs1.getString(4));
     
           } 
       } 
     
       catch (SQLException e ) {
     
       }
     
       finally {
     
          if (rs1 != null) { rs1.close(); }
     
       }
     
    }
     
    static { 
     
         JOptionPane.showMessageDialog(null, "Saved !!!!!");
     
    // conn.close();
     
    }

  15. #15
    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
    Le premier System.out.println(rs1); t'affiche null parce que c'est la variable de classe et qu'elle n'est pas affectée (d'ailleurs même si dans la ligne suivante tu affectais la variable de classe rs1 et non une variable locale rs1 qui la masque, ce serait pareil, vu que cette affectation est après... sauf lors des appels suivant).

    Citation Envoyé par HABILER Voir le message
    (System.out.printlnr(s1.getString(1) +" \t "+rs1.getString(2) + rs1.getString(3)+ rs1.getString(4)); donne donne
    net.ucanaccess.jdbc.UcanaccessResultSet@78259df7
    C'est plutôt le second System.out.println(rs1); qui affiche çà.

    Et donc, à priori, le System.out.printlnr(s1.getString(1) +" \t "+rs1.getString(2) + rs1.getString(3)+ rs1.getString(4)); n'est pas exécuté, donc la boucle non plus, donc le result set est vide.

    Citation Envoyé par HABILER Voir le message
    Par contre lorsque je remplace ? par in nombre
    Que veux-tu dire ? Tu peux nous montrer le SQL complet qui correspond à ce remplacement ? Et que saisis-tu dans ton champ jTxtMatr ?

    Et ajoute au moins un affichage de l'erreur dans le catch.

    Sinon, c'est quoi ce bloc static qui affiche un JOptionPane ?
    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.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    J ai remplace le ? par 3478 qui correspond a 3478 Eric Habils dans ma DB access et comme vous pouvez le constater le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           System.out.println(rs1.getString(1) + "* \t** " + rs1.getString(2) + rs1.getString(3) + rs1.getString(4));
    est bien rempli. Ma Forme est egalement OK.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Etape 2
    Nom
    javax.swing.JTextField[,280,40,200x20,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@718ceb81,flags=296,maximumSize=,minimumSize=,preferredSize=,caretColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],disabledTextColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],selectionColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],columns=0,columnWidth=0,command=,horizontalAlignment=LEADING]
    javax.swing.JTextField[,140,90,91x20,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@718ceb81,flags=296,maximumSize=,minimumSize=,preferredSize=,caretColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],disabledTextColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],selectionColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],columns=0,columnWidth=0,command=,horizontalAlignment=LEADING]
    net.ucanaccess.jdbc.UcanaccessResultSet@33d32544
    Etape 3
    1*  ** Eric3478Habils
    BUILD SUCCESSFUL (total time: 3 minutes 12 seconds)
    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
        public final void FilljTxtNomPrenom() throws SQLException {
            affiche("Etape 2");
            String sql1 = "SELECT * FROM Signaletique WHERE Matricule = 3478";
            ps1 = conn.prepareStatement(sql1);
            //ps1.setString(1, jTxtMatr.getText());
            rs1 = ps1.executeQuery();
            System.out.println("Nom");
            System.out.println(jTxtNomPrenom);
            //ps1.setString(1, jTxtMatr.getText()); // recherche des éléments qui commence par la chaine saisie
            System.out.println(jTxtMatr);
            try {
                System.out.println(rs1);
                while (rs1.next()) {
                    jTxtNomPrenom.setText(rs1.getString(2) + " " + rs1.getString(3));
                    affiche("Etape 3");
                    System.out.println(rs1.getString(1) + "* \t** " + rs1.getString(2) + rs1.getString(3) + rs1.getString(4));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                if (rs1 != null) {
                    rs1.close();
                }
            }
    
            {
                JOptionPane.showMessageDialog(null, "Saved !!!!!");
                ps1.close();
                conn.close();
            }
        }

  17. #17
    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
    Essaye ça :

    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
        public final void FilljTxtNomPrenom() throws SQLException {
            System.out.println("Matricule : "+)jTxtMatr.getText();
            if ( !jTxtMatr.getText().matches("\\d+") ) return;
            affiche("Etape 2");
            String sql1 = "SELECT * FROM Signaletique WHERE Matricule = ?";
            ps1 = conn.prepareStatement(sql1);
            ps1.setLong(1, Long.parseLong(jTxtMatr.getText()));
            rs1 = ps1.executeQuery();
            //System.out.println("Nom");
            //System.out.println(jTxtNomPrenom);
            //System.out.println(jTxtMatr);
            try {
                //System.out.println(rs1);
                while (rs1.next()) {
                    jTxtNomPrenom.setText(rs1.getString(2) + " " + rs1.getString(3));
                    affiche("Etape 3");
                    System.out.println(rs1.getString(1) + "* \t** " + rs1.getString(2) + rs1.getString(3) + rs1.getString(4));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                if (rs1 != null) {
                    rs1.close();
                }
            }
     
            {
                JOptionPane.showMessageDialog(null, "Saved !!!!!");
                ps1.close();
                conn.close();
            }
        }
    Qu'est-ce que ça affiche ?
    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.

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Le code ci-desous s arrete a "Matricule 1.0".

    Bonsoir a tous,

    La valeur associee est null.

    Habiler
    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
        public final void FilljTxtNomPrenom() throws SQLException {
            affiche("Matricule 1.0 : "+jTxtMatr.getText());
            if ( !jTxtMatr.getText().matches("\\d+") ) return;
            affiche("Matricule 1.1 : "+jTxtMatr.getText());
                    String sql1 = "SELECT * FROM Signaletique WHERE Matricule = ?";
            ps1 = conn.prepareStatement(sql1);
            ps1.setLong(1, Long.parseLong(jTxtMatr.getText()));
            rs1 = ps1.executeQuery();
            //System.out.println("Nom");
            //System.out.println(jTxtNomPrenom);
            affiche("Matricule 1.2 : "+jTxtMatr.getText());
            try {
                //System.out.println(rs1);
                while (rs1.next()) {
                    jTxtNomPrenom.setText(rs1.getString(2) + " " + rs1.getString(3));
                    affiche("Etape 3");
                    System.out.println(rs1.getString(1) + "* \t** " + rs1.getString(2) + rs1.getString(3) + rs1.getString(4));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                if (rs1 != null) {
                    rs1.close();
                }
            }

  19. #19
    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
    1. je t'ai demandé de tester un code, pas d'en faire un autre et de me montrer ce que ça affichait...
    2. Citation Envoyé par HABILER Voir le message
      La valeur associee est null.
      La valeur de quoi est associée à quoi ?
    3. Citation Envoyé par HABILER Voir le message
      Le code ci-desous s arrete a "Matricule 1.0".
      Tu veux à priori dire que ton code affiche
      Matricule 1.0
      et rien d'autre...
      Donc, en gros, tu es en train de dire que tu testes en ne saisissant rien dans ton champ matricule... et tu te demandes pourquoi ta requête ne renvoit rien ?
      Tu dois bien évidemment saisir un matricule dans le champ jTxtMatr (saisir par exemple celui que tu foutais en dur : 3478)
    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.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 469
    Points : 149
    Points
    149
    Par défaut
    Bonsoir,

    Je me demande si je ne me suis mal explique ?

    Dans l ecran ci dessous je voudrais que lorsque je remplis le Matricule (jTxtMatr) a l ecran (nom de champ ""Matricule" dans access) le nom de client correspondant a ce matricule apparaisse dans le deuxieme champ de la 1ere ligne de l ecran (jTxtNomPrenom).

    Nom : 1.png
Affichages : 117
Taille : 243,4 Ko

Discussions similaires

  1. tables récupération Access
    Par KinF dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 14/09/2005, 19h45
  2. Tester l'existence d'une table sous Access
    Par Oluha dans le forum Bases de données
    Réponses: 10
    Dernier message: 29/08/2005, 09h42
  3. importer des élémentsde table d'access en paradox
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/08/2005, 13h17
  4. [access]doublons dans une table en access !
    Par hackerandco dans le forum Bases de données
    Réponses: 6
    Dernier message: 14/06/2004, 14h45
  5. Gestion de table dynamique access avec delphi 7
    Par bob.marley dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/04/2004, 13h12

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