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 :

Tester L'existance des donnés saisies par utilisateur dans BD Mysql.


Sujet :

JDBC Java

  1. #1
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut Tester L'existance des donnés saisies par utilisateur dans BD Mysql.
    Salut,

    Je travaille sous Eclipse,

    Explication de mon Code:
    Un utilisateur saisie son Login dans l'objet de la classe JTextField et son password dans l'objet de classe JPasswordField , Alors je teste si ces deux dernières informations existe dans La Base de Donnée Mysql.

    Nom de Base de donnée = test
    Nom de la table = connexion
    Nom des champs: * id de type int, * login de type String, * password de type String.

    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
     
     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
          String login = jTextField1.getText();
    	  String password = jTextField2.getText();
     
    		String pilote = "com.mysql.jdbc.Driver";
     
    		try
    		{
    			Class.forName("com.mysql.jdbc.Driver");
     
    			Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
    			Statement instruction = (Statement) connexion.createStatement();
    			ResultSet resultat = instruction.executeQuery("SELECT * FROM connexion");
                String user = resultat.getString("login");
                String motDePasse1 = resultat.getString("password");
     
    			while(resultat.next())
    			{
    				if(user.equals(login) && motDePasse.equals(password))
    				{
    					JOptionPane.showConfirmDialog(null,"Bienvenue " + login + " .Vous êtes connecté","Juste un test",
    							 JOptionPane.PLAIN_MESSAGE);
    				}
    				else
    				{
    					System.out.println("Introuvable");
    				}
    			}
    		}
    		catch (Exception e)
    		{
     
    			System.out.println("echec pilote : "+e);
    		}
     
     
        }

    Le problème:

    1) Si je veux récupérer le Login je fais juste nomDuTextField.getText() qui retourne un String, Mais lorsque je veux réccupérer password je dois utiliser nomDuPasswordField.getPassword().C'est bon jusqu'à maitenant !

    Mais quand je fais : String password = passwordText.getPassword();
    Eclipse me met une croix rouge sur cette ligne, et il me dit : "Change type of password to char[]" !!

    2) Lors de de Runing, quand je saisie dans un login et password qui existent dans la Base de Donnée, il m'affiche 'introuvable' !!


    Sisiniya.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par sisiniya Voir le message
    "Change type of password to char[]" !!
    Parce que getPassword renvoie un char[] et non pas un String. Si tu veux l'utiliser comme String, tu dois faire appel à new String(char[])

  3. #3
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    Ah! D'accord.

    S'il vous plaît pourriez vous me dire est ce que la syntaxe est logique de La condition if qui se trouve à l'intérieur de La boucle While ?

    Je vous remercie.

    Sisiniya.

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Deux points:
    1 - Déclaration: String motDePasse1 puis: motDePasse.equals Mais bon, ça c pas un bon copier/coller de ton code vers le forum ??
    2 - Resultat.next() d'accord mais tu mets pas à jour les deux variables de comparaisons: user et motDePasse. C'est sûr que tu auras toujours 'introuvable' sauf si c'est le premier login/pwd
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    Oui Effectivement c'est motDePasse à la place motDePasse1 faute de copier/coller !

    Pour le deuxième points, j'ai pas compris pourquoi je vais mettre à jour les deux variables de comparaisons: user et motDePasse ?? Et Comment ?

    Merci .


    Sisiniya.

  6. #6
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    salut,
    je crois que ces deux lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String user = resultat.getString("login");
    String motDePasse1 = resultat.getString("password");
    doivent être à l'intérieur de la boucle while, puisqu'à chaque appel de la méthode next(), on passe à la ligne suivante, et donc il faut récupérer le login et le mot de passe courant, et puis les comparer aux login et mot de passe saisis par l'utilisateur.
    et puis pour le else ou tu affiches le message "Introuvable", il faut le mettre en dehors de la boucle, il faut d'abord parcourir toute la table, et puis à la fin de la boucle, si on ne trouve rien, c'est alors qu'on affiche introuvable, et il serait bien bien de mettre un boolean qui aura true si les login et mot de passe existe, false sinon. un petit code pour mieux voir la chose
    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
     
    String user, motDePasse;
    boolean log_pass_existe = false;
     
    while(resultat.next())
    {
    	user = resultat.getString("login");
    	motDePasse1= resultat.getString("password");
    	if(user.equals(login) && motDePasse.equals(password))
    	{
    		JOptionPane.showConfirmDialog(null,"Bienvenue " + login + " .Vous êtes connecté","Juste un test",
    				 JOptionPane.PLAIN_MESSAGE);
    		log_pass_existe = true;
    		break;
    	}
    }
    if (!log_pass_existe)
    	System.out.println("Introuvable");

  7. #7
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    S'il vous plaît, j'ai essayé de trouver où est le problème mais Vainement.Voilà les 3 classes plus la classe main . et à la fin de mon message je vous donnerai le résultat que j'ai eu . ( Vraiment j'ai besoin de votre aide, car j'ai resté avec ce problème plus que 5 Jours !).

    Classe : Fonctions
    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
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JOptionPane;
     
    public class Fonctions 
    {
    	public static void isIdentified(String login,String password)
    	{   
     
    			try
    			{			
    				Class.forName("com.mysql.jdbc.Driver");
     
    				Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
    				Statement instruction = connexion.createStatement();
    				ResultSet resultat = instruction.executeQuery("SELECT * FROM connexion");
     
    				String user, motDePasse;
    				boolean log_pass_existe = false;
     
    				while(resultat.next())
    				{
    					user = resultat.getString("login");
    					motDePasse= resultat.getString("password");
    					if(user.equals(login) && motDePasse.equals(password))
    					{
    						JOptionPane.showConfirmDialog(null,"Bienvenue " + login + " .Vous êtes connecté","Juste un test",
    								 JOptionPane.PLAIN_MESSAGE);
    						log_pass_existe = true;
    						break;
    					}
    				}
    				if (!log_pass_existe)
    					System.out.println("Introuvable");
     
     
    			}
    			catch (Exception e)
    			{
     
    				System.out.println("echec pilote : " + e);
    			}			
    	}
    }

    Classe : Connecter.java

    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
     
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
     
    public class Connecter 
    {
    		JPanel pan1;
    		JPanel pan2;
    		JPanel pan3;
    		JPanel contenuAjuster;
    		JPanel contenuFenetre;
    		JFrame fenetre;
    		JTextField loginText;
    		JPasswordField passwordText;
    		JLabel loginLabel;
    		JLabel passwordLabel;
    		JButton envoyer;
     
    		Connecter(){		
     
    		// TODO Auto-generated method stub
    		pan1 = new JPanel();
    		GridLayout disposition1 = new GridLayout(3,2);
    		pan1.setLayout(disposition1);
     
    		loginLabel = new JLabel("Login");
    		loginText = new JTextField(10);
    		passwordLabel = new JLabel("Password");
     
    		envoyer = new JButton("se connecter");
    		JPasswordField passwordText = new JPasswordField ();
    		passwordText.setEchoChar('*');
     
     
    		pan1.add(loginLabel);
    		pan1.add(loginText);
    		pan1.add(passwordLabel);
    		pan1.add(passwordText);
     
     
    		pan2 = new JPanel();
    		pan2.add(envoyer);
     
    		pan3 = new JPanel();
    		pan3.setLayout(new BorderLayout());
    		pan3.add("North",pan1);
    		pan3.add("East",pan2);
     
     
     
    		contenuAjuster = new JPanel();
    		contenuAjuster.add(pan3);
     
    		contenuFenetre = new JPanel();
    		contenuFenetre.setLayout(new BorderLayout());
    		contenuFenetre.add("Center",contenuAjuster);
     
    		fenetre = new JFrame("Connexion");
    		fenetre.setContentPane(contenuFenetre);
     
    		fenetre.setSize(500,400);
    		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		fenetre.setLocationRelativeTo(null); // Fenetre au centre d'ecran
    	    //fenetre.setResizable(false);
    		fenetre.setVisible(true);
    		Analyse even = new Analyse(this);
    		envoyer.addActionListener(even);
    		}
     
    }
    Classe : Analyse.java

    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
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    public class Analyse implements ActionListener
    {
    	Connecter conn;
     
    	Analyse(Connecter conn)
    	{
    		this.conn = conn;
    	}
     
    	public void actionPerformed(ActionEvent événement) 
    	{ 
    		//Récupération des données insérées par User
    		String login = conn.loginText.getText();
    		char[] pass = conn.passwordText.getPassword();
    		String password = new String(pass);
     
    		Fonctions.isIdentified(login,password);
    	} 
     
    }
    Classe : mainProg.java

    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
     
    public class mainProg
    {
    	public static void main(String[] args)
    	{
    		try
    	       {
    	           Class.forName("com.mysql.jdbc.Driver").newInstance();
    	           System.out.println("Le chargement du driver fonctionne");
    	       } 
    	       catch (Exception ex) 
    	       {
    	           System.out.println("erreurrrrrrrr");
    	       }
    	      new Analyse(new Connecter());
    	}
    }
    Et Voilà Le résultat quand je fais Running :

    Une fenêtre s'affiche avec les composantes : label + bouton + ...
    Et dans la console voilà la ligne affichée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Le chargement du driver fonctionne
    Et quand je clique sur le bouton voilà ce qui est affiché dans la console :

    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
     
     
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at Analyse.actionPerformed(Analyse.java:17)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Merci infiniment de m'aider car j'ai besoin de vos idées .


    Sisiniya.

  8. #8
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    salut,
    pourquoi tu ne fais pas directement dans le main
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new Analyse(new Connecter());
    puisque dans le constructeur de ta classe Connecter, tu crée déjà un objet Analyse et tu l'affectes au bouton comme listener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Analyse even = new Analyse(this);
    envoyer.addActionListener(even);
    et puis tu pourrais nous dire c'est quoi la ligne 17 de ta classe Analyse

  9. #9
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    Merci.

    Voilà la ligne 17 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char[] pass = conn.passwordText.getPassword();

    Sisiniya.

  10. #10
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    salut,
    dans ta classe Connecter, tu déclares ton JPasswordField
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JPasswordField passwordText;
    et puis dans le constructeur, tu redéclares un autre JPasswordField, mais qui est locale au constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JPasswordField passwordText = new JPasswordField ();
    passwordText.setEchoChar('*');
    du coup, le passwordText que tu as instancié est celui qui est locales au constructeur, et l'objet passwordText déclaré en dehors du constructeur contient toujours null, donc, dans ton constructeur, tu corriges les lignes ci-dessus par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    passwordText = new JPasswordField ();
    passwordText.setEchoChar('*');

  11. #11
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    ça marche . Vraiment je sais pas quoi vous dire ...! Que dieu vous Aide.

    Merci boucoup .


    Sisiniya.

  12. #12
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    ravi que ça marche

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

Discussions similaires

  1. [MySQL] Gestion des données d'un utilisateur dans une application
    Par Boujoute dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/06/2012, 14h48
  2. Réponses: 2
    Dernier message: 22/07/2011, 15h44
  3. [Excel] Intégrer au fichier Excel des données saisies par formulaire
    Par drogba72 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 21/05/2008, 11h13
  4. [MySQL] envoi des données de boutons radio dans table mysql
    Par alexbigot dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 07/06/2007, 13h51
  5. [HTML] Récupérer données saisies par Utilisateur
    Par jacques13 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 08/01/2007, 21h55

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