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 :

[DEBUTANTE] Formater et inserer une date dans une BDD my SQL


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut [DEBUTANTE] Formater et inserer une date dans une BDD my SQL
    Bonjour,
    Merci de bien vouloir m'aider à résoudre ce pb qui bloque l'avancement de mon projet.
    voilà, je travaille avec un BDD my SQL dans laquelle je dois inserer une date de majoration des enseignants. Le problème est que j'ai des erreurs: il ne prend pas le paramètre "Date dateActuelle" et j'arrive pas à tester mon code avec le void main que j'ai fait car il ne prend pas le format de date que je lui passe dans la fonction AjoutS. voilà ce que j'ai fait:

    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
    public void AjoutS(String Enseignant,int EtatP,String Module,int he,int hp, Date dateActuelle)
        {
    dateActuelle= new Date(dateActuelle.getTime());
    //création d'un objet date et mise à jour de la date courante
     
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    //création d'un format de date pour Mysql
     
    dateActuelle.getTime();
    //mise a jour de la date courante
     
    String requete="INSERT INTO services(NomEnseignant,Module,EtatPaiement,NbHeuresPrevues,NbHeuresEffectuees, DateMaj) VALUES('"+Enseignant+"','"+Module+"','"+EtatP+"','"+he+"','"+hp+"', '"+dateFormat.format(dateActuelle)+"')";
     
            try{
            stat.executeUpdate(requete);
            }
            catch(SQLException e)
            {
                System.out.println ("Probleme mise a jour table");
            }
        }
     
     
    public static void main(String[] args) {
     
            Mysql m=new Mysql();
     
    m.AjoutS("maria",30,"C45",12,9,"25/12/2006");
     
    }
    aidez moi svp, je suis vraiment bloquée avec ce pb.

  2. #2
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Utilises aussi un PreparedStatement ça va te simplifier la vie ...

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 114
    Par défaut
    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
     
    	public void AjoutS( String Enseignant, int EtatP, String Module, int he, int hp, Date dateActuelle ){
    		dateActuelle = new Date(dateActuelle.getTime());
    		// création d'un objet date et mise à jour de la date courante
     
    		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    		// création d'un format de date pour Mysql
     
    		dateActuelle.getTime();
    		// mise a jour de la date courante
     
    		String requete = "INSERT INTO services(NomEnseignant,Module,EtatPaiement,NbHeuresPrevues,NbHeuresEffectuees, DateMaj) VALUES('" + Enseignant + "','" + Module + "','" + EtatP + "','" + he
    				+ "','" + hp + "', '" + dateFormat.format(dateActuelle) + "')";
     
    		try{
    			stat.executeUpdate(requete);
    		}
    		catch( SQLException e ){
    			System.out.println("Probleme mise a jour table");
    		}
    	}
     
     
    	public static void main( String[] args ){
     
    		Mysql m = new Mysql();
    		m.AjoutS("maria", 30, "C45", 12, 9, "25/12/2006");
    	}

    deja tu peux simplifier :

    dateActuelle = new Date(dateActuelle.getTime());
    // tu remplace une date par la meme date...

    dateActuelle.getTime();
    // ca te renvoit une valeur numerique que tu stock null part donc inutile

    ces 2 choses n'ont pas de sens... tu peux les virer.

    Ensuite il nous faut l'erreur pour mieux t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try{
    			stat.executeUpdate(requete);
    		}
    		catch( SQLException e ){
    		    e.printStackTrace();
    		}
    affiche nous l'erreur que renvoit la console.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Mieux vaut utiliser un PreparedStatement avec la méthode setDate, celà te permet d'être indépendant du format fixé par la base de données
    Dans ton cas:

    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
    
    public void AjoutS(String Enseignant,int EtatP,String Module,int he,int hp, Date dateActuelle)
        {
    dateActuelle= new Date(dateActuelle.getTime());
    //création d'un objet date et mise à jour de la date courante
      
           
    dateActuelle.getTime();
    //mise a jour de la date courante
    
    String requete="INSERT INTO services(NomEnseignant,Module,EtatPaiement,NbHeuresPrevues,NbHeuresEffectuees, DateMaj) VALUES(?,?,?,?,?,?)";
           PreparedStatement st = null;
           Connection connection = null;
            try{
           
            st = connection.prepareStatement(requete);
            st.setString(1,Enseignant);
            st.setString(2,Module);
            st.setInt(3,EtatP);
            st.setInt(he);
            st.setInt(hp);
            st.setDate(new java.sql.Date(dateActuelle.getTime());
            st.execute();
            }
            catch(SQLException e)
            {
                System.out.println ("Probleme mise a jour table");
                
            } finally {
               if(st != null) {
                 st.close();
               }
        }
    
    
    public static void main(String[] args) {
           
            Mysql m=new Mysql();
    
    m.AjoutS("maria",30,"C45",12,9,"25/12/2006");
    }
    

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut [DEBUTANTE] Formater et inserer une date dans une
    Merci de donner plus de détails dans vos réponses car je suis archi nulle en java et si c'est possible de faire des modifications dans le code.

    déjà, j'ai ajouté une ligne à mon code, mon code devient:

    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
    	public void AjoutS(String Enseignant,int EtatP,String Module,int he,int hp,Date dateActuelle)
    	{
     
    	    dateActuelle= new Date();//création d'un objet date 
    	    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//création d'un format de date pour Mysql
     
    	    dateActuelle.getTime(); //mise a jour de la date courante
     
    	    dateFormat.format(dateActuelle); //une chaine date formatée.
     
    String requete="INSERT INTO services(NomEnseignant,Module,EtatPaiement,NbHeuresPrevues,NbHeuresEffectuees,DateMaj) VALUES('"+Enseignant+"','"+Module+"','"+EtatP+"','"+he+"','"+hp+"','"+dateFormat.format(dateActuelle)+"')";
     
    		try{
    		stat.executeUpdate(requete);
    		}
    		catch(SQLException e)
    		{
    			e.printStackTrace();
    			//System.out.println("Probleme mise a jour table");
    		}
    	}
     
    public static void main(String[] args) {
     
    		Mysql m=new Mysql();
                    m.AjoutS("maria",30,"C45",12,9,"25/12/2006");
    }
    et le problème quand j'enlève
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dateActuelle= new Date(dateActuelle.getTime());
    et je le remplace par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     dateActuelle= new Date();
     dateActuelle.getTime();
     dateFormat.format(dateActuelle);
    j'ai l'erreur suivante: the constructor Date is undefined

    et l'erreur que j'ai en console cad de tt le code est:

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method AjoutS(String, int, String, int, int, Date) in the type Mysql is not applicable for the arguments (String, int, String, int, int, String)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut [DEBUTANTE] Formater et inserer une date dans une
    Bonjour Sinok et merci,

    j'ai essayé d'appliquer le code que tu as posté mais j'ai des erreurs pour 3 lignes du code, les suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    st.setInt(he);   (1)
    st.setInt(hp);   (2)
    st.setDate(new java.sql.Date(dateActuelle.getTime()));   (3)
    les erreurs sont:

    pour (1) et (2): the method setInt(int, int) in the type PreparedStatement is not applicable for the argument (int)
    et pour (3): the method setDate(int, Date) in the type PreparedStatement is not applicable for the argument (Date)

    et j'ai toujours une erreur dans le programme de test que j'ai fait, l'erreur est:

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method AjoutS(String, int, String, int, int, Date) in the type Mysql is not applicable for the arguments (String, int, String, int, int, String)
    merci en tt cas

  7. #7
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Citation Envoyé par mariafan
    Bonjour Sinok et merci,

    j'ai essayé d'appliquer le code que tu as posté mais j'ai des erreurs pour 3 lignes du code, les suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    st.setInt(he);   (1)
    st.setInt(hp);   (2)
    st.setDate(new java.sql.Date(dateActuelle.getTime()));   (3)
    les erreurs sont:

    pour (1) et (2): the method setInt(int, int) in the type PreparedStatement is not applicable for the argument (int)
    et pour (3): the method setDate(int, Date) in the type PreparedStatement is not applicable for the argument (Date)

    et j'ai toujours une erreur dans le programme de test que j'ai fait, l'erreur est:



    merci en tt cas
    Pour le PreparedStatement les méthodes setXXX fonctionnent comme ça :

    setXXX(i, valeur);

    Avec i le numéro de paramètre à valoriser dans la requête paramétrée.

    A+

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut [DEBUTANTE] Formater et inserer une date dans une
    Merci thibaut,

    c'est bon je n'ai plus d'erreur pour les set..., par contre j'ai toujours l'erreur dans le programme de test.

    le programme de test est:

    public static void main(String[] args) {

    Mysql m=new Mysql();

    m.AjoutS("maria",30,"C45",12,9,"25/12/2

    006"
    );

    }[/COLOR][/B]

    l'erreur est la suivante:

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method AjoutS(String, int, String, int, int, Date) in the type Mysql is not applicable for the arguments (String, int, String, int, int, String)


    merci encore.

Discussions similaires

  1. [MySQL] insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 16/08/2014, 11h10
  2. insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2014, 16h31
  3. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 20h16

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