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 :

insertion dans base données


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut insertion dans base données
    Rebonjours,

    J'ai ma liste déroulante et j'aimerais que le choix sélectionné aille dans la table Clients de ma base de données:

    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
     
    public void itemStateChanged(ItemEvent evt){
        //obj est l'objet qui a reçu evt, de type selection d'un item
     
        Object obj=evt.getSource();   
     //On récupère l'item sélectionné avec la méthode getItem() qui interroge l'évènement
        //et on "cast" pour obtenir le résultat sous forme de chaîne
        String s=(String)(evt.getItem());
     
        insertBd(s);
     
      public void insertBd(String str)
             throws SQLException, ClassNotFoundException{
     
     
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        connection=DriverManager.getConnection("jdbc:odbc:busnessplan");
         Statement statement=connection.createStatement();
     
         statement.executeUpdate(
                   "insert into clients values                 "+
                   "('cpa','comptabilite',115,1,'"+str+"')"
               );
     
      }
    Je ne comprends pas l'erreur qui est:
    unreported exception java.sql.SQLExection;must be caught or declared to be thrown


    merci par avance
    claire

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut
    je viens juste de trouver un ex de code avec try et catch

    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
     
        String s=(String)(evt.getItem());
        changeLabel(s);
     
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("js");
     
            try {
                //String expression =s;
                Object result = engine.eval(s);
               // System.out.println(expression+" = "+result);
            } catch(ScriptException se) {
                se.printStackTrace();
            }
     
        insertBd(result);
    et mon erreur est maintenant que le compilateur ne trouve pas "result".

    Pourtant, quand je l'envoie vers une autre méthode (sans sql), ça marche.
    Pouvez vous me donner une piste?

    merci
    claire

  4. #4
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    peux tu copier/coller la trace de l'erreur

  5. #5
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    result, comme tu le montres, est declaré dans le bloc try, et il n'est visible que dans ce bloc.
    Donc, le return result est une erreur pour le compilateur.

    2 solutions:
    1. Déclarer result en dehors du try avec
    Le = null est très important, autrement, tu aurais une autre erreur de compil (result peut être non initialisé)

    2. Déplacer le return dans le try, après eval. Mais là, tu auras une autre erreur de compil (la méthode doit retourner un résultat)... désolé

    Sérieusement: Il faut prendre son temps pour comprendre les try/catch/exceptions/etc, sinon, on risque de produire du code dangereux, comme tu le montres par exemple, ou tu ne fais qu'imprimer l'exception, et tu retournes result même s'il y'a eu une exception, ce qui n'a pas de sens car result contiendra n'import quoi (ou null).

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 50
    Par défaut
    Tu declares ton objet result dans le bloc "try" il n'est donc connu que dans ce bloc la.

    Pour que ca marche tu dois :
    le declarer avant le bloc try/catch : Object result;

    puis l'instancie comme tu le fais result = ...

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut
    merci pour vos réponse.

    Voilà mon nouveau 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
    String s=(String)(evt.getItem());
        changeLabel(s);
     
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("js");
            try {
                //String expression =s;
               // System.out.println(expression+" = "+result);
                       Object result = engine.eval(s);
     
                           insertBd(result);
     
            } catch(ScriptException se) {
                se.printStackTrace();
            }
    et voici l'erreur générée:

    insert(java.lang.String) in Client cannot be appled to (java.lang.object)

    il y a donc un problème entre le String et l'objet.

    mais quand j'envoyais ma variable s ça ne marchait pas non plus.
    Je suis perdu
    merci pour votre aide

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut
    Ca y est mon try marche et voici l'erreur:

    javax.script.ScriptException:sun.org.mozilla.javascript.internal.EcmaError:
    ReferenceError:"c" n'est pas défini <<Unknown source>#1>in<Unknown source> at line number 1


    Dans ma liste déroulante il y a "c" et "e".

    Je ne comprend pas l'erreur générée
    merci pour votre aide

Discussions similaires

  1. Insertion dans base données
    Par youssefminato dans le forum Langage
    Réponses: 5
    Dernier message: 13/06/2014, 00h10
  2. insert dans base donne .mdf c#
    Par _haroun dans le forum C#
    Réponses: 9
    Dernier message: 28/04/2010, 12h22
  3. Réponses: 6
    Dernier message: 09/06/2006, 12h17
  4. Réponses: 9
    Dernier message: 13/10/2005, 18h24
  5. Réponses: 8
    Dernier message: 11/05/2005, 14h48

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