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 :

Accès à JDBC dans une méthode.


Sujet :

JDBC Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut Accès à JDBC dans une méthode.
    Voila mon problême est assez simple, j'arrive à me connecter sans problême à ma base SQL dans le main de ma classe (en lançant le tout comme une JAVA application) mais pas dans une méthode appelé dans un scriplet de ma page JSF ou il bug sur la première instruction:

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    L'exeption est de type com.mysql.jdbc.Driver





    Voila éventuellement le code pour ceux que ça intéresse même si le problême n'est pas la...

    public static void main(String args[]){

    try{
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    java.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","55e'é"'sré"kfd"'sé')à(è-"'&é"7aaaewe6fd7");

    Statement stmt = conn.createStatement(
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_UPDATABLE);

    ResultSet resultat = stmt.executeQuery("SELECT * FROM info");

    int i=0;


    while(resultat.next()){


    String a=resultat.getString("ID");
    String b=resultat.getString("Definition");
    String c=resultat.getString("Organism");

    System.out.println("NP");

    i++;


    }

    }

    catch(Exception E){

    System.out.println("Big problem");
    System.out.println(E.getMessage());


    }




    }
    Donc ça, ça marche...



    public void affect(){

    try{
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    PLANTAGE, redirection dans le catch...
    ...
    }

    catch(Exception E){

    System.out.println("Big problem");
    System.out.println(E.getMessage());


    }
    }
    Ca, comme dit, non.

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Salut,

    Quand tu donnes une exception, tu pourrais donner la stacktrace et pas seulement le message qui n'apporte rien ici.

    Tu n'as pas besoin d'instancier le driver, juste de charger la classe.

    Remplace donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("com.mysql.jdbc.Driver");
    Pour l'exception rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println(E.getMessage());
    E.printStackTrace();
    pour afficher la stack.

    Ensuite je serais toi, je vérifierais que le classpath est correct dans le contexte d'ouverture JSF. Je pense que là il ne trouve pas le jar du JDBC mysql.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Salut et merci pour ta réponse.
    Voila le stack trace

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.jsf.tut.Connecting.setR(Connecting.java:55)
    at org.apache.jsp.Result_jsp._jspService(Result_jsp.java:393)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410)
    at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:468)
    at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Unknown Source)
    Il m'a mit en effet un warning au niveau du mysql connector jar que j'ai ajouté dans le classpath (classpath entry... will not be exported or published) classnotfound exeption may result (je suis sur Eclipse), j'ai fait un quick fix, je n'ai plus le warning...

    Mais tout de même, si je retire le mysql connector, même ma fonction main ne marche plus, donc je pense qu'il est prit en compte, non?

  4. #4
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    C'est bien ça donc, le classpath est correct sous Eclipse mais comme il n'est pas publié, dans l'autre contexte ça ne fonctionne pas.
    A toi de voir comment avoir le classpath correct de l'autre côté.

    ClassNotFoundException = la classe n'est pas trouvée => quasiment toujours une erreur de classpath (si ce n'est pas une erreur de frappe).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    C'est ennuyeux car les CLASSPATH sont ajoutés au niveau du projet (folder), or tout (page jsf incluse) ici fait partie du même projet donc j'ai tendance à penser que c'est incompréhensible.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    bon je vais essayer d'inclure ma librairie spécifiquement en tant qu'implantation JSF, je pense que c'est ça le problême.

    Merci pour l'aide.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/02/2007, 13h14
  2. passer la valeur d'un return dans une méthode
    Par belukrin dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2006, 06h58
  3. instanciation problématique dans une méthode ActiveX
    Par mr.saucisse dans le forum MFC
    Réponses: 14
    Dernier message: 17/01/2006, 16h34
  4. Réponses: 13
    Dernier message: 25/03/2005, 11h00
  5. Réponses: 2
    Dernier message: 15/11/2004, 15h12

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