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

avec Java Discussion :

Suivre la session d'un utilisateur aprés sa connexion


Sujet :

avec Java

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur en Télécommunication
    Inscrit en
    Octobre 2017
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Télécommunication
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 121
    Points : 63
    Points
    63
    Par défaut Suivre la session d'un utilisateur aprés sa connexion
    Bonsoir,
    j'ai créé une application en utilisant Sqlite comme SGBD. j'ai deux utilisateurs qui peuvent se connecter à cette appli.
    je veux enregistrer les actions que fais chaque utilisateur mais je ne sais pas comment commencer, sachant qu'un utilisateur peut :
    • créer un nouveau client
    • modifier ces infos
    • créer un projet
    • ajouter un nouveau versement
    • annuler un versement

    Est ce qu'il y a quelqu'un qui pourra m'aider sur ça ?
    Merci beaucoup

  2. #2
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    ça va dépendre de tout un tas de choses. Est-ce que c'est du client serveur? Quelle techno utilises tu exactement? Comment identifies tu tes utilisateurs ? Bref, c'est un cas d'utilisation classique, mais il faut un peu plus de détails pour t'aider précisément.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur en Télécommunication
    Inscrit en
    Octobre 2017
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Télécommunication
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 121
    Points : 63
    Points
    63
    Par défaut
    Salut,
    J'ai un logiciel conçu pour être installé sur un seul pc, la base de données est intégrée dans le logiciel.
    Pour la connexion j'utilise un nom d'utilisateur et un mot de passe.
    J'espère que j'étais clair.
    Merci

  4. #4
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Ok,

    donc c'est un utilisateur à la fois, ce qui facilite les choses.

    Le plus simple, c'est que la classe qui fait l'identification soit un singleton avec une variable static qui contiennent une référence à l'utilisateur courant (id ou nom d'utilisateur).

    Dans chaque table modifiable par les utilisateurs, tu rajoutes une colonne pour cette référence, et éventuellement une colonne timestamp qui enregistre l'instant de la modification.

    A chaque modification, tu récupères l'utilisateur courant et tu le met dans la base. Ça te permet de tracer les sources des modifications.

    J'espère que ça t'éclaire.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  5. #5
    Membre du Club
    Femme Profil pro
    Ingénieur en Télécommunication
    Inscrit en
    Octobre 2017
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Télécommunication
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 121
    Points : 63
    Points
    63
    Par défaut
    Bonjour,
    Merci beaucoup pour votre réponse, en fait j'ai fait une recherche sur internet sur singleton, j'ai pas bien compris comment je dois l'utiliser ( vu que je suis débutante en programmation c'est la première fois que j'entends ce mot).
    Pouvez vous m'éclairer les choses un peu plus.
    Merci

  6. #6
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Bonjour,

    Pour suivre l'historique des actions de l'utilisateur, il faut savoir quelles informations sont nécessaires pour tracer ses actions et leurs conséquences.
    On parle là d'actions métier (comme tu disais "créer un nouveau client / modifier ces infos / créer un projet").
    En général, on indique
    - l'identifiant de l'utilisateur (via un singleton ou autre)
    - le timestamp de l'action
    - un code et/ou un libellé de l'action
    - des informations complémentaires en fonction de l'action.


  7. #7
    Membre du Club
    Femme Profil pro
    Ingénieur en Télécommunication
    Inscrit en
    Octobre 2017
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Télécommunication
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 121
    Points : 63
    Points
    63
    Par défaut
    je ne sais pas par ou commencer. Pouvez-vous me donner un exemple ou bien des liens qui pourront m'être utiles ?
    Merci

  8. #8
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Un singleton, c'est un pattern qu'on utilise communément pour s'assurer qu'un objet n'est instancié qu'une seule fois dans la jvm. Sous sa forme la plus simple, il s'agit d'une classe dont le constructeur est private, et qui dispose d'un champ static final qui crée une instance.

    De cette manière, tu t'assures qu'il n'y a qu'un seul manager de session dans ta jvm. Et comme tout est local, c'est suffisant. De la, tu peux récupérer l'instance de ce manager, soit directement par le champs s'il est public soit par une methode, pour identifier un utilisateur ou récupérer l'utilisateur courant.

    Sur le principe du singleton, tu as ca. Essaies et montre nous ce que ca donne, c'est encore le meilleur moyen.

    Bon courage.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  9. #9
    Membre du Club
    Femme Profil pro
    Ingénieur en Télécommunication
    Inscrit en
    Octobre 2017
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Télécommunication
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 121
    Points : 63
    Points
    63
    Par défaut
    Voici le code de la classe connexion, mais j'ai pas su comment je dois récupérer le nom ou l'id de l'utilisateur afin de l'ajouter dans les tables aprés les modification.
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
     
     
    public class Connexion extends JFrame {
     
    	 static DateFormat df = new SimpleDateFormat("EEEE d MMMM yyyy HH:mm:ss z G");
     
     
    	private JPanel contentPane;
    	public JTextField username;
    	private JPasswordField passwordField;
     
    	public JTextField textField;
    	private static Connection connect;
    	private String url = "jdbc:sqlite:C:\\Users\\tosiba\\eclipse-workspace\\training1\\src\\training1\\BDD.db";
     
     
    	public JTextField getUsername() {
    		return username;
    	}
     
     
    	public void setUsername(JTextField username) {
    		this.username = username;
    	}
     
     
    	private static String horloge;
    	  static Thread tr;
    	  private static JTextField textField_1;
     
     
     
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
     
    			public void run() {
    				try {
    					Connexion frame = new Connexion();
    					frame.setVisible(true);
    					frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
     
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
     
     
     
    		});
     
    	}
     
     
    	public Connexion() {
     
     
    		try {
    			 try {
    					Class.forName("org.sqlite.JDBC");
    				} catch (ClassNotFoundException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    		      connect = DriverManager.getConnection(url);
    		    } catch (SQLException e) {
    		      e.printStackTrace();
    		    }
     
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 863, 754);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		contentPane.setLayout(new BorderLayout(0, 0));
    		setContentPane(contentPane);
     
    		JPanel panel = new JPanel();
    		contentPane.add(panel, BorderLayout.CENTER);
    		panel.setBackground(new Color(255,255,255));
    		panel.setLayout(null);
     
    		JButton btnNewButton = new JButton("CONNEXION");
    		btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 16));
    		btnNewButton.setForeground(new Color(255, 255, 255));
    		btnNewButton.setBackground(new Color(0, 0, 139));
    		btnNewButton.addActionListener(new ActionListener() {
    			private AbstractButton label;
     
     
    			public void actionPerformed(ActionEvent arg0) {
    				Connection connection;
    				PreparedStatement statement ;
    			      connection = null;
    			      try
    			      {
     
     
    			    	  statement = Connexion.getInstance().prepareStatement(" SELECT * FROM Utilisateurs WHERE Nom_Utilisateur=? AND mdp=?");
     
    			  statement.setString(1, username.getText());
    			  statement.setString(2, passwordField.getText());
    			 ResultSet resultat = statement.executeQuery();                  
     
    			 if(resultat.next())
    			 {
    				Acceuil a = new Acceuil();
    				 a.setExtendedState(JFrame.MAXIMIZED_BOTH);
    				 Connexion.this.setVisible(false);
    				 a.setVisible(true);
     
    			 }else{
    				 JOptionPane.showMessageDialog(null, "Connexion a échouée");
    			 }
     
    			 statement.close();
     
     
     
    			}
    			catch(SQLException e1) {
     
     
    			  System.err.println(e1.getMessage());
    			}
     
    			}
    		});
     
     
     
     
     
     
     
    		btnNewButton.setBounds(598, 446, 143, 34);
    		panel.add(btnNewButton);
     
    		username = new JTextField();
    		username.setBounds(513, 328, 118, 27);
    		panel.add(username);
    		username.setColumns(10);
     
    		passwordField = new JPasswordField();
    		passwordField.setBounds(513, 378, 118, 27);
    		panel.add(passwordField);
     
    		JLabel lblNomDutilisateur = new JLabel("Nom d'utilisateur :");
    		lblNomDutilisateur.setForeground(new Color(25, 25, 112));
    		lblNomDutilisateur.setFont(new Font("Tahoma", Font.PLAIN, 15));
    		lblNomDutilisateur.setBounds(389, 329, 164, 20);
    		panel.add(lblNomDutilisateur);
     
    		JLabel lblMotDePasse = new JLabel("Mot de passe :");
    		lblMotDePasse.setForeground(new Color(25, 25, 112));
    		lblMotDePasse.setFont(new Font("Tahoma", Font.PLAIN, 15));
    		lblMotDePasse.setBounds(389, 379, 103, 20);
    		panel.add(lblMotDePasse);
     
    		JCheckBox show = new JCheckBox("Afficher mot de passe");
    		show.setBackground(new Color(255,255,255));
    		show.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				if (show.isSelected()) {
    					passwordField.setEchoChar((char) (0));
    				}
    				else {passwordField.setEchoChar((char) (1));}
    			}
    		});
    		show.setBounds(678, 378, 153, 23);
    		panel.add(show);
     
    		textField = new JTextField();
    		textField.setEditable(false);
    		textField.setBorder(null);
    		textField.setBackground(new Color(255, 255, 255));
    		textField.setFont(new Font("Tahoma", Font.BOLD, 24));
    		textField.setForeground(new Color(0, 0, 128));
    		textField.setBounds(509, 76, 215, 57);
    		panel.add(textField);
    		textField.setText("              ");
    		textField.setColumns(10);
     
    		textField_1 = new JTextField();
    		textField_1.setEditable(false);
    		textField_1.setForeground(new Color(25, 25, 112));
    		textField_1.setBorder(null);
    		textField_1.setBackground(new Color(255, 255, 255));
    		textField_1.setFont(new Font("Tahoma", Font.BOLD, 24));
    		textField_1.setText("              ");
    		textField_1.setColumns(10);
    		textField_1.setBounds(526, 33, 215, 57);
    		panel.add(textField_1);
     
    		JSeparator separator = new JSeparator();
    		separator.setForeground(new Color(0, 0, 0));
    		separator.setBounds(116, 33, 0, 216);
    		panel.add(separator);
     
    		JSeparator separator_1 = new JSeparator();
    		separator_1.setForeground(new Color(0, 0, 0));
    		separator_1.setBounds(115, 246, 205, -6);
    		panel.add(separator_1);
     
     
     
     
     
     
    	        Thread clock= new Thread(){
    	        	public void run() {
     
    	        	for(;;)	{
    	        		Calendar cal = new GregorianCalendar();
    			        int month =cal.get(Calendar.MONTH);
    			        int year =cal.get(Calendar.YEAR);
    			        int day =cal.get(Calendar.DAY_OF_MONTH);
    			        textField.setText(" "+day+"/"+(month+1)+"/"+year);
     
    			        int s= cal.get(Calendar.SECOND);
    			        int m= cal.get(Calendar.MINUTE);
    			        int h= cal.get(Calendar.HOUR);
    			        textField_1.setText(""+h +":"+m+":"+s);
     
    	        		try {
    						sleep(1000);
    					} catch (InterruptedException e) {
    						Logger.getLogger(Connexion.class.getName()).log(Level.SEVERE,null,e);
    						e.printStackTrace();
    					}
    	        	}
    	        	}
    	        };
    	        clock.start();
     
     
     
    	}
     
    	public static Connection getInstance(){
    		  if(connect == null){
    		    new Connexion();
     
    		    System.out.println("INSTANCIATION DE LA CONNEXION SQL ! ");
    		  }
    		  else{
    		    System.out.println("CONNEXION SQL EXISTANTE ! ");
    		  }
    		  return connect;   
    		}
    }

  10. #10
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    oulala, c'est le bazar ton truc.

    Alors, premièrement, une règle absolue à suivre pour faire du java proprement : sépare les choses! Ici tu as dans une même classe la partie qui gère la connexion de l'utilisateur, la vue associé, et la connexion jdbc. C'est trop! Tu devrais réécrire ça, ou plutôt diviser :
    • Une classe ConnxionFrame qui étend JFrame, et qui sera la vue.
    • Une classe UserSession, qui est charger de fournir la méthode de connexion et de stocker l'utilisateur. C'est celle là qui doit être un singleton.
    • Une classe JDBCConnexion chargée de faire la requête jdbc. Le mieux étant dans ton contexte de t'assurer là aussi d'un singleton. Cela te permettra de t'assurer qu'il n'y a qu'une connexion à la fois. Dans l'absolu, tu peux déporter dans cette classe toute tes methodes qui font appel à la base de données.

    Pour ce qui est de la récupération du nom ou de l'id de l'utilisateur. Si c'est le nom, rien de plus simple, tu stocks le nom d'utilisateur fournis dans une String dès que la connexion est validée. Pour l'id, ta table doit logiquement contenir une colonne id. Si c'est le cas, tu modifies ton "SELECT *" par "SELECT id", et avant de charger Accueil tu le récupère depuis ton ResultSet. Et là encore tu stock, dans un int probablement. Le plus simple étant quand même de prendre le nom d'utilisateur, si tu sûr qu'il est unique.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  11. #11
    Membre du Club
    Femme Profil pro
    Ingénieur en Télécommunication
    Inscrit en
    Octobre 2017
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Télécommunication
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 121
    Points : 63
    Points
    63
    Par défaut
    class qui fournit la connexion jdbc
    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
     
    package training1;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.text.ParseException;
     
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
     
    public class jdbc {
    	private static Connection connect;
    	private String url = "jdbc:sqlite:C:\\Users\\tosiba\\eclipse-workspace\\training1\\src\\training1\\BDD.db";
     
    	public jdbc(){
    		try {
    			 try {
    					Class.forName("org.sqlite.JDBC");
    				} catch (ClassNotFoundException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    		      connect = DriverManager.getConnection(url);
    		    } catch (SQLException e) {
    		      e.printStackTrace();
    		    }
    	}
     
     
    	public static Connection getInstance() throws SQLException{
    		  if(connect == null){
    		    new jdbc();
     
    		    System.out.println("INSTANCIATION DE LA CONNEXION SQL ! ");
    		  }
    		  else{
    		    System.out.println("CONNEXION SQL EXISTANTE ! ");
    		  }
    		  return connect;   
    		}
     
     
    }
    class user pour la connexion
    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
    package training1;
     
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.text.ParseException;
     
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
     
    public class user {
    	//String a;
    	//String b;
    	static Connection con;
    	static PreparedStatement statement ;
    	public user() {
     
     
    	}
     
    	public static void connexion(String a,String b) throws ParseException {
    		 try {
    	  			con=jdbc.getInstance();
    	  		} catch (SQLException e1) {
    	  			// TODO Auto-generated catch block
    	  			e1.printStackTrace();
    	  		}
       	 try {
    		statement = con.prepareStatement(" SELECT * FROM Utilisateurs WHERE Nom_Utilisateur=? AND mdp=?");
    		statement.setString(1, a);
    	    statement.setString(2, b);
    		 ResultSet resultat = statement.executeQuery();  
    		 if(resultat.next())
    		 {
     
    			AJOUTER a1=new AJOUTER();
    			a1.setVisible(true);
    		 }else{
    			 JOptionPane.showMessageDialog(null, "Connexion a échouée");
    		 }
     
    	} catch (SQLException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
     
     
     
    	}
     
     
    }
    class connexion jframe
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    package training1;
    import java.awt.BorderLayout;
     
    import java.applet.Applet;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
     
     
    import java.awt.EventQueue;
    import java.awt.FlowLayout;
    import java.awt.Event;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.text.JTextComponent;
    import javax.swing.JTextField;
    import javax.swing.JPasswordField;
    import javax.swing.JLabel;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.Locale;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    import javax.swing.*;
     
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.AbstractButton;
    import javax.swing.JButton;
    import javax.swing.JTextField;
    import javax.swing.JPasswordField;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
     
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.awt.event.ActionEvent;
    import javax.swing.JCheckBox;
    import java.awt.Checkbox;
    import java.awt.event.ComponentAdapter;
    import java.awt.event.ComponentEvent;
    import java.awt.Font;
    import java.awt.Color;
     
     
    public class Connexion extends JFrame {
     
    	 static DateFormat df = new SimpleDateFormat("EEEE d MMMM yyyy HH:mm:ss z G");
     
     
    	private JPanel contentPane;
    	public JTextField username;
    	private JPasswordField passwordField;
     
    	public JTextField textField;
    	private static String horloge;
    	  static Thread tr;
    	  private static JTextField textField_1;
    	  private JTextField textField_2;
     
     
     
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
     
    			public void run() {
    				try {
    					Connexion frame = new Connexion();
    					frame.setVisible(true);
    					frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
     
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
     
     
     
    		});
     
    	}
     
     
    	public Connexion() {
     
     
     
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 863, 754);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		contentPane.setLayout(new BorderLayout(0, 0));
    		setContentPane(contentPane);
     
    		JPanel panel = new JPanel();
    		contentPane.add(panel, BorderLayout.CENTER);
    		panel.setBackground(new Color(255,255,255));
    		panel.setLayout(null);
     
    		JButton btnNewButton = new JButton("CONNEXION");
    		btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 16));
    		btnNewButton.setForeground(new Color(255, 255, 255));
    		btnNewButton.setBackground(new Color(0, 0, 139));
    		btnNewButton.addActionListener(new ActionListener() {
    			private AbstractButton label;
     
     
    			public void actionPerformed(ActionEvent arg0) {
     
    				PreparedStatement statement ;
     
     
    			    		String a= username.getText();
    			    	   	 String b= passwordField.getText();
    			    	   	 try {
    							user.connexion(a, b);
     
    						} catch (ParseException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
     
     
     
    			}
    		});
     
     
     
     
     
     
     
    		btnNewButton.setBounds(598, 446, 143, 34);
    		panel.add(btnNewButton);
     
    		username = new JTextField();
    		username.setBounds(513, 328, 118, 27);
    		panel.add(username);
    		username.setColumns(10);
     
    		passwordField = new JPasswordField();
    		passwordField.setBounds(513, 378, 118, 27);
    		panel.add(passwordField);
     
    		JLabel lblNomDutilisateur = new JLabel("Nom d'utilisateur :");
    		lblNomDutilisateur.setForeground(new Color(25, 25, 112));
    		lblNomDutilisateur.setFont(new Font("Tahoma", Font.PLAIN, 15));
    		lblNomDutilisateur.setBounds(389, 329, 164, 20);
    		panel.add(lblNomDutilisateur);
     
    		JLabel lblMotDePasse = new JLabel("Mot de passe :");
    		lblMotDePasse.setForeground(new Color(25, 25, 112));
    		lblMotDePasse.setFont(new Font("Tahoma", Font.PLAIN, 15));
    		lblMotDePasse.setBounds(389, 379, 103, 20);
    		panel.add(lblMotDePasse);
     
    		JCheckBox show = new JCheckBox("Afficher mot de passe");
    		show.setBackground(new Color(255,255,255));
    		show.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				if (show.isSelected()) {
    					passwordField.setEchoChar((char) (0));
    				}
    				else {passwordField.setEchoChar((char) (1));}
    			}
    		});
    		show.setBounds(678, 378, 153, 23);
    		panel.add(show);
     
    		textField = new JTextField();
    		textField.setEditable(false);
    		textField.setBorder(null);
    		textField.setBackground(new Color(255, 255, 255));
    		textField.setFont(new Font("Tahoma", Font.BOLD, 24));
    		textField.setForeground(new Color(0, 0, 128));
    		textField.setBounds(509, 76, 215, 57);
    		panel.add(textField);
    		textField.setText("              ");
    		textField.setColumns(10);
     
    		textField_1 = new JTextField();
    		textField_1.setEditable(false);
    		textField_1.setForeground(new Color(25, 25, 112));
    		textField_1.setBorder(null);
    		textField_1.setBackground(new Color(255, 255, 255));
    		textField_1.setFont(new Font("Tahoma", Font.BOLD, 24));
    		textField_1.setText("              ");
    		textField_1.setColumns(10);
    		textField_1.setBounds(526, 33, 215, 57);
    		panel.add(textField_1);
     
    		JSeparator separator = new JSeparator();
    		separator.setForeground(new Color(0, 0, 0));
    		separator.setBounds(116, 33, 0, 216);
    		panel.add(separator);
     
    		JSeparator separator_1 = new JSeparator();
    		separator_1.setForeground(new Color(0, 0, 0));
    		separator_1.setBounds(115, 246, 205, -6);
    		panel.add(separator_1);
     
    		textField_2 = new JTextField();
    		textField_2.setBounds(143, 235, 86, 20);
    		panel.add(textField_2);
    		textField_2.setColumns(10);
     
     
     
     
     
     
    	        Thread clock= new Thread(){
    	        	public void run() {
     
    	        	for(;;)	{
    	        		Calendar cal = new GregorianCalendar();
    			        int month =cal.get(Calendar.MONTH);
    			        int year =cal.get(Calendar.YEAR);
    			        int day =cal.get(Calendar.DAY_OF_MONTH);
    			        textField.setText(" "+day+"/"+(month+1)+"/"+year);
     
    			        int s= cal.get(Calendar.SECOND);
    			        int m= cal.get(Calendar.MINUTE);
    			        int h= cal.get(Calendar.HOUR);
    			        textField_1.setText(""+h +":"+m+":"+s);
     
    	        		try {
    						sleep(1000);
    					} catch (InterruptedException e) {
    						Logger.getLogger(Connexion.class.getName()).log(Level.SEVERE,null,e);
    						e.printStackTrace();
    					}
    	        	}
    	        	}
    	        };
    	        clock.start();
     
     
     
    	}
    }
    mais j'ai pas su comment récupérer le nom d'utilisateur, j'ai réfléchie à une autre façon de le faire mais ça sera trop long

  12. #12
    Membre du Club
    Femme Profil pro
    Ingénieur en Télécommunication
    Inscrit en
    Octobre 2017
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Télécommunication
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 121
    Points : 63
    Points
    63
    Par défaut
    j'ai changé la classe connexion en ç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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    package training1;
     
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.text.ParseException;
     
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
     
    public class user {
    	String a;
    	String b;
    	static Connection con;
    	static PreparedStatement statement ;
    	public user( String a , String b) {
    		try {
    			con = jdbc.getInstance();
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
       	 try {
    		statement = con.prepareStatement(" SELECT * FROM Utilisateurs WHERE Nom_Utilisateur=? AND mdp=?");
    		statement.setString(1, a);
    	    statement.setString(2, b);
    		 ResultSet resultat = statement.executeQuery();  
    		 if(resultat.next())
    		 {
     
    			AJOUTER a1=new AJOUTER();
    			a1.setVisible(true);
    		 }else{
    			 JOptionPane.showMessageDialog(null, "Connexion a échouée");
    		 }
     
    	} catch (SQLException | ParseException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
     
    	}
     
    	public static void connexion(String a ,String b)  {
     
    		if (statement==null) {
    		new user(a,b);
    		}
     
    		return a;
     
    	}
     
     
    }

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/12/2009, 12h26
  2. Fichier log pour suivre les actions d'un utilisateur
    Par Maxi-môme dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/08/2007, 12h37
  3. Recupérer le login de l'utilisateur après la connexion
    Par onizuka159 dans le forum Contribuez
    Réponses: 15
    Dernier message: 11/05/2007, 11h35
  4. Tracer les actions des utilisateurs
    Par Housssss dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 06/02/2007, 12h21
  5. [Tableaux] Suivre les modifications faits par chaque utilisateur
    Par dessinateurttuyen dans le forum Langage
    Réponses: 7
    Dernier message: 19/07/2006, 10h05

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