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 :

Utilisation de preparedstatement


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut Utilisation de preparedstatement
    Bonjour,

    Je dois utiliser preparedstatement pour inserer dans la table la ligne que tape l'utilisateur, mais à la fin il affiche juste Exception:null. Je ne comprends pas.

    Merci de m'aider;

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Peux-tu mettre le code qui coince ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Voici le 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
     
      BufferedReader lineReader = 
                    new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Entrez votre id: ");
            String lid = lineReader.readLine();
            System.out.print("Entrez votre salle: ");
            String laSalle = lineReader.readLine();
            System.out.print("Entrez l'id du message parent si vous répondez à un message: ");
            String leParent = lineReader.readLine();
            System.out.print("Entrez votre Titre ou bien mettez RE: le tire du message parent: ");
            String leTitre = lineReader.readLine();
            System.out.print("Entrez le corps de votre message puis appuyer sur entrer: ");
            String lecorps = lineReader.readLine();
            String ajout = "INSERT INTO message VALUES(?,?,?,?,?,?,?)";
          ResultSet result;
              PreparedStatement pstat = 
                     connect.prepareStatement(ajout);
                      Date sysdate = new Date();
                  // On fixe une première valeur pour l'argument
                  pstat.setInt(1,8);
                  pstat.setInt(2, Integer.parseInt((lid)));
                  pstat.setInt(3, Integer.parseInt((laSalle)));
                  pstat.setInt(4, Integer.parseInt((leParent)));
                  pstat.setDate(5, (java.sql.Date) sysdate);
                  pstat.setString(6, leTitre);
                  pstat.setString(7, lecorps);
     
                  pstat.executeUpdate(ajout);
                  // On obtient le résultat
                result = pstat.executeQuery();

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu ne peux pas faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pstat.executeUpdate(ajout); <-- ça, c'est OK, au contenu des colonnes prêt
    // On obtient le résultat
    result = pstat.executeQuery(); <-- ça, c'est OUT
    le preparedStatement contient le code pour l'insertion, pas une lecture...

    Quelle est l'erreur renvoyée ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    quand je fini d'entrer mes données et que j'appuie sur entrer j'ai Exception: null

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Comment récupères-tu la connexion (connect) ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    oui je me connecte avec connect = ods.getConnection("login","motde passe");

  8. #8
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    j'ai trouvé enfait c'est l'exception que j'ai fait. A la fin du code j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    catch(Exception e)
    	{
    	 System.out.println ("Exception: "+e.getMessage());
    	}
    Mais je ne sais pas pourquoi ça fait ça?

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Oui mais est ce qu'il te retourne une connexion ?
    Tu as essayé en debug ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    oui normalement parce que avant ça marchai avec les requetes.

  11. #11
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Est ce que j'ai respecté les types dans les set? parce que quand je les mets en commentaire je n'ai pas d'exception.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Affiches plutôt la stacktrace que le message de l'exception.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  13. #13
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Avec e.printStackTrace et system.println(e) j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.lang.ClassCastException
    Exception:: java.lang.ClassCastException
    	at Conn.main(Conn.java:59)
    Le problème c'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pstat.setDate(5, (java.sql.Date) sysdate);
    je voulais mettre la date courante

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    La class java.sql.Date hérite de java.util.Date, mais de ce fait une java.util.Date n'est pas forcément une java.sql.Date, donctu ne peux pas directement caster la seconde vers la première.

    utilises plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pstat.setDate(5, (new java.sql.Date(sysdate.getTime()));
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  15. #15
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    mais maintenant j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    java.sql.SQLException: ORA-03115: type de réseau ou représentation non pris en compte
     
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
    	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
    	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
    	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:626)
    	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:182)
    	at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:630)
    	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1081)
    	at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1483)
    	at Conn.main(Conn.java:64)
    Exception:: java.sql.SQLException: ORA-03115: type de réseau ou représentation non pris en compte
    Et dans mon code ça souligne la ligne pstat.executeUpdate(ajout);

    Je ne comprend pas les requetes que j'ai faites precedement ont fonctionné.

  16. #16
    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
    Salut,

    d'après le msg
    sql.SQLException: ORA-03115: type de réseau ou représentation non pris en compte
    Je pense que sous Oracle, ton 5ème champ correspondant à la date n'est pas compatible avec la Date de java.util.date ... faut regarder dans le forum ceux qui ont traité les dates oracle avec java.util.date ou java.sql.date ...

    Moi, j'ai un peu le même pb mais je suis sous MySql.

    A=
    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)

  17. #17
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Pour un champ DATETIME, il faudrait utiliser Timestamp côté JDBC.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pstat.setTimestamp(5, new Timestamp(System.currentTimeMillis()));
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 25/07/2014, 14h34
  2. Insertion de données dans une table en utilisant un PreparedStatement
    Par meskine dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 30/08/2012, 18h25
  3. Réponses: 3
    Dernier message: 16/04/2009, 23h01
  4. [Data] [jdbcTemplate] Utiliser les PreparedStatements
    Par ::Fistons dans le forum Spring
    Réponses: 5
    Dernier message: 31/08/2007, 10h44
  5. Réponses: 3
    Dernier message: 05/05/2006, 11h41

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