Récupérer la vraie valeur de mon JPasswordField dans la BD

coolanso Messages postés 75 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 5 juillet 2014 - 9 nov. 2013 à 03:00
KX Messages postés 16597 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 septembre 2022 - 9 nov. 2013 à 08:41
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 :

public class Utilisateur {
private String mdp;
public String getMdp(){
    return this.mdp.toString().trim();
}
}


dans mon service:

public class ServicesUtilisateur {
public boolean ajouterUtilisateur(Utilisateur user) {
        Connection connection = DataBaseConnector.getConnection();
        if (connection == null) {
            return false;
        }
        while((user.getNom().length()!=0)&& (user.getMdp().length()!=0))
        {
          
        try {
            PreparedStatement preparedStatement = connection.prepareStatement("insert into user(NomUser,Pass,) values(?,?)");
            preparedStatement.setString(1, user.getNom());
            preparedStatement.setString(2, user.getMdp());
           preparedStatement.executeUpdate();
                                   .
                                   .
                                   .
}


quand je tape par exemple comme mot de passe ok il s'enregistre par exemple en :[C@147480e et pourtant j'aimerais qu'il s'enregistre comme tel. Merci bien de m'aider.
A voir également:

1 réponse

KX Messages postés 16597 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 septembre 2022 124
9 nov. 2013 à 08:41
Tu ne nous as pas mis le code sur la partie JPasswordField alors que c'est là que tu t'es trompé, bien avant la partie base de données.

JPasswordField.getPassword() ne renvoie pas un String mais un tableau de caractères. Du coup lorsque tu as fait ton affectation ça devait être quelquechose comme
this.mdp = jpassfield.getPassword().toString()
.
Le toString appliqué à un tableau de caractères explique que tu ais en réalité obtenu la valeur
[C@147480e
qui est un String décrivant l'objet tableau. Ce que tu veux toi ce serait plutôt un String contenant les même caractères que ceux du tableau ce qui se fait plutôt comme ceci :

this.mdp = new String(jpassfield.getPassword());
1