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 :

recuperer automatiquement l'heure


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut recuperer automatiquement l'heure
    salut j'ai creer une fenetre en java qui permet d'enregistrer un client mais je ne voudrais pas que l'utilisateur tape la date d'enregistrement. je voudrais qu'elle soit automatique. et aussi l'ID de l'enregistrement doit être précéder par l'initial de l'entreprise qui "Fac". quand je clique le bouton il m'affiche des erreurs.
    voici mon 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
    public Facilitateur() {
            initComponents();
     
            facil.setText("FAC");
     
            Thread t;
            t = new Thread(){
     
                public void run(){
                    while (true) {
                        DateFormat date= new SimpleDateFormat("dd/MM/yyyy  hh : mm : ss aa");
                        String datestring = date.format(new Date()).toString();
                        dfacil.setText(datestring);
                        try{
                            Thread.sleep(1);
                        }
                        catch(Exception e){
                        }
                    }
     
                }
     
            };
            t.start();
        }
     
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String facile=facil.getText() ; 
    String nfacile=nfacil.getText() ;
    String pfacile=pfacil.getText() ;
    String sfacile=(String)sfacil.getSelectedItem();
    String dfacile=dfacil.getText() ;
    String vfacile=vfacil.getText() ;
    String tfacile=tfacil.getText() ;
    s= Integer.parseInt((String) sfacil.getSelectedItem());
    if(facil.getText().length()!=0 && nfacil.getText().length()!=0 && pfacil.getText().length()!=0 && s!=0 && tfacil.getText().length()!=0 ){
    String requete="insert into facilitateur(incriptionfac,Nom,Prenom,Sex,Date,Ville,Tel) Values('"+facile+"','"+nfacile+"','"+pfacile+"','"+sfacile+"','"+dfacile+"','"+vfacile+"','"+tfacile+"')";
    try{
    stm.executeUpdate(requete);
        JOptionPane.showMessageDialog(null, "Succes d''enregistrement");
        facil.setText(null);nfacil.setText(null); pfacil.setText(null); sfacil.setSelectedItem(null);
        vfacil.setText(null); tfacil.setText(null);
    }catch(Exception e){JOptionPane.showMessageDialog(null, e.getMessage());}
    }
     
        }
    quelqu'un pourrait m'aider a trouver une solution?

  2. #2
    Membre régulier Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    java.util.Date date = new java.util.Date();
    Citation Envoyé par el_amir Voir le message
    quand je clique le bouton il m'affiche des erreurs.
    Envoie l'erreur stp
    “L’homme est la mesure de toute chose” Protagoras
    "Goutte après goutte l'eau finit par creuser le marbre"

    Pensez à mettre !
    Si un message vous a aidé , pensez à mettre !

    Mon Twitter
    Ma Veille Techno

  3. #3
    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. On ne doit pas modifier des éléments de Swing depuis un autre thread que l'Event Dispatch Thread. Donc pas d'exécution depuis un thread quelconque (y compris le main) pour modifier l'affichage. Un Timer Swing, un SwingWorker, ou alors un thread avec des invokeLater pour forcer l'exécution dans l'EDT.
      Voici un exemple d'un composant d'affichage de l'heure clef en main (avec un exemple d'usage dans la méhode main) :
      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
      import java.awt.event.HierarchyEvent;
      import java.awt.event.HierarchyListener;
      import java.time.LocalDateTime;
      import java.time.format.DateTimeFormatter;
       
      import javax.swing.JFrame;
      import javax.swing.JLabel;
      import javax.swing.SwingUtilities;
       
      public class JDateLabel extends JLabel {
       
      	private static final long serialVersionUID = 1L;
      	private final javax.swing.Timer timer;
      	private DateTimeFormatter datetimeformatter;
       
      	public JDateLabel() {
      		this(null);
      	}
      	public JDateLabel(DateTimeFormatter dateTimeFormatter) { 
      		setHorizontalAlignment(CENTER);
      		addHierarchyListener(new HierarchyListener() {
       
      			@Override
      			public void hierarchyChanged(HierarchyEvent e) {
      				if ( SwingUtilities.getWindowAncestor(JDateLabel.this)==null || !JDateLabel.this.isVisible() ) {
      					stop();
      				}
      				else {
      					start();
      				}
      			}
      		});
      		timer = new javax.swing.Timer(1000, e->JDateLabel.super.setText(LocalDateTime.now().format(datetimeformatter)));
      		timer.setInitialDelay(0);
      		setDatetimeformatter(dateTimeFormatter);
      	}
       
      	public final void setDatetimeformatter(DateTimeFormatter datetimeformatter) {
      		this.datetimeformatter = datetimeformatter==null?DateTimeFormatter.RFC_1123_DATE_TIME:datetimeformatter;
      	}
       
      	protected final void stop() {
      		timer.stop();
      	}
       
      	protected final void start() { 
      		timer.start();
      	}
       
      	public final void setText() {
      		// ignore
      	}
       
       
      	public static void main(String[] args) {
       
      		JFrame frame = new JFrame();
      		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
      		frame.add(new JDateLabel(DateTimeFormatter.ofPattern("dd/MM/yyyy  hh : mm : ss a")));
       
      		frame.setSize(200,200);
      		frame.setLocationRelativeTo(null);
      		frame.setVisible(true);
       
      	}
       
      }
    2. N'utilise pas l'affichage pour générer le paramètre pour ta requête. L'heure ou la date affichée, c'est pour l'affichage. Pour la requête autant regénérer une valeur juste.
    3. Ne fait pas de concaténation pour créer la requête. Utilise des PreparedWhere. Tu n'auras pas de problème de quote, ou de format de date éventuellement, etc.
    4. Le champ pour stocker l'heure, c'est quoi le type ? Si c'est un varchar ou équivalent, alors formatte l'heure (comme je fais dans le composant JDateLabel). Si le type est un type date/datetime, utilise le type Java adéquate (de préférence par l'API, java.time, à vérifier que le pilote JDBC que tu utilises le gère bien, dans sa doc).
    5. Donne-nous le message d'erreur que tu obtiens et la ligne. Mais je subbodore une problème avec le format de date que tu utilises.
    6. facil.setText(null);.
      Ne passe jamais null à un JTextField ou équivalent, tu risques une NullPointerException quand tu vas relire la valeur saisie et la manipuler, ou l'insertion de la valeur "null" dans ta base, ou alors il faut traiter le cas (partout où nécessaire) ! Ou passe une chaîne vide au lieu de null.


    Pour le prefix "fac", pour les ID, cela dépend des capacités de ton SGBD. Eventuellement, le SGBD supporte la génération d'id avec prefix, et ça ne concerne pas Java. Soit non, et il faudrait passer par une procédure stockée, ou un service distant, parce en Java, dès qu'il va y avoir plusieurs utilisateurs, tu ne pourras plus gérer des ids uniques facilement. En tout cas, je doute qu'on puisse avec aucun SGBD passer juste un préfix et que le SGBD se débrouille juste pour ajouter un id unique derrière (incrémental ou pas).

    Ça c'est pour la fausse bonne réponse. Parce que normalement, on ne devrait pas avoir d'information (même statique) dans l'ID (clef primaire). Que tu veuilles afficher FAC au début d'un numéro ou identifiant (nomenclature) n'a rien avoir avec le stockage de la donnée, ou les problématique d'identifiant, mais dans sa restitution (à l'écran, à l'impression, dans un document exporté, etc). Donc inutile de le stocker. Sauf si ce préfix peut varier (en fonction du département, de l'année, que sais-je). Mais dans ce cas, stocke-le à part, pas dans l'id. C'est inutile, et ça complique inutilement. Et il faut juste le restituer au besoin. Eventuellement, fait des vues, des procédures stockées, au besoin.
    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.

Discussions similaires

  1. Recuperation automatique de la valeur d'un champs
    Par AliJava dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 16/05/2008, 21h03
  2. Recuperer juste l heure d un datetime
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/03/2007, 14h41
  3. Réponses: 2
    Dernier message: 27/03/2006, 21h17
  4. Réponses: 3
    Dernier message: 27/03/2006, 08h28
  5. Réponses: 14
    Dernier message: 17/11/2005, 17h16

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