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

Langage Java Discussion :

Arguments incompatibles à l'appel


Sujet :

Langage Java

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut Arguments incompatibles à l'appel
    Bonjour.
    Je souhaite intégrer un timestamp dans une base de données HSQLDB. Pour cela je crée une classe test_OObase disposant de la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        public int insertRecords(Date stamp, int num, String machine, String instance, int port, int sga, int taille, int nbdbf, int nbtemp, int arch, int arch_act, int nbarch, int volarch, int drapeau) {
     
            try {   
                int Nblig = st.executeUpdate("INSERT INTO scrute_base (stamp, num, machine, instance, port, sga, taille, nbdbf, nbtemp, arch, arch_act, nbarch, volarch, drapeau) VALUES ('"+stamp+"','"+num+"', '"+machine+"', '"+instance+"', '"+port+"', '"+sga+"', '"+taille+"', '"+nbdbf+"', '"+nbtemp+"', '"+arch+"', '"+arch_act+"', '"+nbarch+"', '"+volarch+"', '"+drapeau+"')");
                return Nblig;
            } catch(SQLException err) {
                System.err.println("\nERROR: Failed to insert records.");
                //err.printStackTrace();
                return 0;
            }                                                                     
     
        }
    Cette méthode est appelée dans la classe scrute_bases, ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    				Date stamp = new Date();
    				stamp.getTime();
    				System.out.println("Date : "+stamp);
     
    				int val = hsqldb.insertRecords(stamp, boucle2, Tab_BDD[boucle2][0], Tab_BDD[boucle2][1], 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
    Java refuse en me disant :
    "the method insertRecords (Date,int,String,String,int,int,int,int,int,int,int,int,int,int) in the type test_OObase in not applicable for the arguments (Date,int,String,String,int,int,int,int,int,int,int,int,int,int)

    Je ne comprends pas. J'ai parfaite égalité entre le nombre d'arguments et leur type.
    Est-ce un problème de format de date ?

    Je suis en Eclipse 3.2.2 avec une jre1.5.0_06

    Merci pour votre aide.

    Théophanie

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Question peut-être bidon, mais tes imports de Date sont-ils bien les mêmes dans les 2 classes ?

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    autre idée :

    c'est l'insertion de ta date qui cloche :

    dans ta requete tu mets :
    .....'"+stamp+"'.....

    et stamp c'est un Object Date en Java.
    quand tu execute il appelle la methode toString() de l'objet stamp.
    ce qui donne un truc du genre :
    dow mon dd hh:mm:ss zzz yyyy
    (http://java.sun.com/j2se/1.4.2/docs/...html#toString() )

    alors que pour inserer en SQL ca doit certaine etre ecrit comme ca :
    2007-11-21

  4. #4
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Citation Envoyé par eclesia Voir le message
    autre idée :
    alors que pour inserer en SQL ca doit certaine etre ecrit comme ca :
    2007-11-21
    Oui mais là c'est une SQL exception qu'elle devrait prendre lors de l'executeUpdate, une erreur à l'exécution donc, or là il semble que ce soit une erreur à la compil'.

    Par contre, cela risque de se passer en effet, donc il peut être judicieux de passer par un PreparedStatement...

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Pour compléter ce que dit _devteam, à mon avis, tu utilises java.sql.Date d'un côté et java.util.Date de l'autre. Vérifie tes besoins et tes imports.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut Insertion manquée
    J'ai ajouté la ligne suivante du côté de la classe "test_OObase" afin d'avoir le même type de date de chaque côté :

    import java.util.Date;

    Il y a un mieux car j'ai désormais un message "ERROR: Failed to insert records."

    Je vais insérer désormais un format date du type "AAAA-MM-JJ" comme l'indique eclesia.

    Théophanie

Discussions similaires

  1. [XL-2002] Que mettre en argument quand on appelle la procédure Exit d'un TextBox
    Par Touffe54 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/11/2010, 21h17
  2. Réponses: 2
    Dernier message: 11/05/2009, 15h25
  3. Problème d'arguments dans l'appel de SqlPlus
    Par mut_ dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 04/07/2007, 09h42
  4. [PHP-JS] Variable PHP comme argument dans l'appel d'une fonction Javascript
    Par The Molo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2007, 09h00
  5. Réponses: 3
    Dernier message: 05/01/2007, 09h45

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