Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
887 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Enregistrer telle quelle la valeur d'un JPasswordField dans la BD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Enregistrer telle quelle la valeur d'un JPasswordField dans la BD

n°2209789
coolpythea​s
l'union fait la force
Posté le 09-11-2013 à 03:36:56  profilanswer
 

Bonsoir à tous, j'ai un souci avec le JPasswordField. Dans mon application je permets à l'utilisateur de modifier son mot de passe, le problème est que le mot de passe enregistré dans la BD n'est pas celle que l'utilisateur à saisi, du coup impossible de le modifier puisque mon application vérifie l'ancien mot de passe.
 
voici comment je récupère mon mot de passe:
 
dans mon model :
 

Code :
  1. public class Utilisateur {
  2. private String mdp;
  3. public String getMdp(){
  4. return this.mdp.toString().trim();
  5. }
  6. }


dans mon service:
 

Code :
  1. public class ServicesUtilisateur {
  2. public boolean ajouterUtilisateur(Utilisateur user) {
  3. Connection connection = DataBaseConnector.getConnection();
  4. if (connection == null) {
  5. return false;
  6. }
  7. while((user.getNom().length()!=0)&& (user.getMdp().length()!=0))
  8. {
  9. try {
  10. PreparedStatement preparedStatement = connection.prepareStatement("insert into user(NomUser,Pass,) values(?,?)" );
  11. preparedStatement.setString(1, user.getNom());
  12. preparedStatement.setString(2, user.getMdp());
  13. preparedStatement.executeUpdate();
  14. .
  15. .
  16. .
  17. }


 
quand je tape par exemple comme mot de passe <gras>ok </gras>il s'enregistre par exemple en :<gras>[C@147480e</gras><ital></ital> et pourtant j'aimerais qu'il s'enregistre comme tel. Merci bien de m'aider.


---------------
l'on s'enrichit d'avantage en partageant ces connaissances
mood
Publicité
Posté le 09-11-2013 à 03:36:56  profilanswer
 

n°2209790
lasnoufle
La seule et unique!
Posté le 09-11-2013 à 05:45:07  profilanswer
 

Salut

 

Le truc que t'enregistres dans ta BD ca m'a tout l'air d'etre une adresse memoire. Vu que ce que tu montres a l'air correct, je parierais une piecette sur ce que tu passes au setter: a tous les coups tu lui passes ton <JPasswordField>.getPassword().toString(), qui renvoie une addresse memoire vu que getPassword() renvoie un tableau.

 

Essaies de remplacer par new String(<JPasswordField>.getPassword()) et ca devrait aller beaucoup mieux.


Message édité par lasnoufle le 09-11-2013 à 05:45:26

---------------
C'était vraiment très intéressant.
n°2209880
coolpythea​s
l'union fait la force
Posté le 10-11-2013 à 22:55:48  profilanswer
 

Bonsoir lasnoufle,j'ai très bien compris ton message mais il y a un autre problème, et c'est mon gros  problème du MVC. Comment appéllé une méthode d'un formulaire du package A dans un autre du package B ?  
voici ma procédure:
Pour l'enregistrement de l'utilisateur, j'ai d'abord créé le model (classe Utilisateur qui contient les getters et setters) dans le package A. Ensuite j'ai créé dans mon contrôleur une methode (AjouterUtilisateur qui prend en parametre l'utilisateur de mon model et qui retourne un booléen) dans le package B.
Enfin dans ma vue, dans le ActionPerformed du Bouton Enregistrer j'appelle la méthode ajouterUtilisateur(Utilisateur user) du contrôleur.
Mon problème est, comment puis-je depuis le getter du mot de passe du mondel, qui je précise retourne un String, récupérer la valeur exacte du mot passe saisi par l'utilisateur dans la vue ? Faut- il créer une instance de ma vue dans le model afin de récuperer la valeur du mot de passe par la méthode getMotDePasse, ou bien est -il possible, au lieu d'appeller la vue dans mon model de l'appellé dans le contrôleur?
voici la classe Utilisateur:
 

Code :
  1. private String nom;
  2. private String mdp; /* c'est un String*/
  3. public class Utilisateur {
  4. private String mdp;
  5. public String getMdp(){
  6. return this.mdp.toString().trim(); /* retourne un string, et pourtant je voudrais pouvoir récupérer avec cette méthode la valeur du mot de passe saisi dans  la vue*/
  7. }
  8. }


 
Controleur:
 

Code :
  1. public class ServicesUtilisateur {
  2. public boolean ajouterUtilisateur(Utilisateur user) {
  3. Connection connection = DataBaseConnector.getConnection();
  4. if (connection == null) {
  5. return false;
  6. }
  7. while((user.getNom().length()!=0)&& (user.getMdp().length()!=0))
  8. {
  9. try {
  10. PreparedStatement preparedStatement = connection.prepareStatement("insert into user(NomUser,Pass,) values(?,?)" );
  11. preparedStatement.setString(1, user.getNom());
  12. preparedStatement.setString(2, user.getMdp()); /*  la valeur du mot de passe du model alors que j'aimerais pouvoir utiliser new String(mdp.getPassword)*/
  13. preparedStatement.executeUpdate();
  14. }

 
 
La vue:
 

Code :
  1. private void CmdEnregistrerActionPerformed(java.awt.event.ActionEvent evt) {
  2. try {
  3. ServicesUtilisateur servUtil =new ServicesUtilisateur();
  4.                     boolean resultat=servUtil.ajouterUtilisateur(user);
  5.                      if(resultat==true){
  6.                              JOptionPane.showMessageDialog(null, "Utilisateur Enregistré", "Succès Sauvegarde", JOptionPane.INFORMATION_MESSAGE);
  7.                      }else

n°2209928
lasnoufle
La seule et unique!
Posté le 11-11-2013 à 15:45:43  profilanswer
 

Je pense que ton probleme est encore en amont. Le probleme se trouve (probablement, si j'ai devine juste) autour du setter, pas du getter. Quand tu appelles ton user.getMdp(), c'est deja trop tard, il contient deja l'adresse au format texte, au lieu du mot de passe reel.
 
Tu peux montrer le setMdp() de ta classe Utilisateur? Mais meme lui sera correct je suppose.
 
Ce qu'il faut que tu cherches, c'est l'endroit dans ton code ou le JPasswordField de ton UI est mis en relation avec setMdp();. C'est probablement la que ca se passe. Bon si tu utilises un MVC, je suppose que cette relation est peut-etre pas dans du code Java, mais ptetre dans un fichier de config genre XML ou que sais-je, malheureusement je m'y connais tres peu en MVC.


---------------
C'était vraiment très intéressant.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Enregistrer telle quelle la valeur d'un JPasswordField dans la BD

 

Sujets relatifs
Sumif avec intervalle de valeurSQLlite enregistrer un point "."
vérification présence valeur dans tableau associatifenregistrer image dans BDD
Incrémenter des quantités par ligne jusqu'à une valeur cible globaleLes dates : j'arrive pas à enrégistrer dans ma BD
Recherche de valeur dans un tableau dynamiqueBd Access, champs liés à la source Excel avec VBA
Problème de création xml en PHP avec données d'une BD 
Plus de sujets relatifs à : Enregistrer telle quelle la valeur d'un JPasswordField dans la BD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR