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 :

[JDBC]Problème de connexion


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut [JDBC]Problème de connexion
    Bonjour, j'ai un souci avec ma connection a la base de donnée, je travail en local, ma base en mysql est dans le repertoire /var/lib/mysql/toto que j'ai cree en ligne de commande sous linux grace a l'instruction create database toto

    j'ai mis cette instruction :


    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
     
    try {
                // tenter de récupérer le driver Mysql
                Class.forName("com.mysql.jdbc.Driver").newInstance();    
                System.out.println("Chargement du pilote Mysql réussi");
            }
            catch(Exception e) {
                System.err.print("Erreur de chargement du pilote : ");
                System.err.println(e.getMessage());
            }
            try{
     
                Connection con =DriverManager.getConnection ("jdbc:mysql:/var/lib/mysql/toto.sql","root","ogcnice");
                System.out.println("Connection base de donnée réussi");
                Statement stmt = conn.createStatement();
            }
            catch(SQLException sqle){
                System.err.print("Erreur connexion base de donnée : ");
                System.err.println(sqle.getMessage());
            }

    et j'ai constamment cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    init:
    deps-jar:
    Compiling 1 source file to /home/nissarte/Programmes/test/build/classes
    /home/nissarte/Programmes/test/src/test/Connection.java:32: incompatible types
    found   : java.sql.Connection
    required: test.Connection
                Connection con =DriverManager.getConnection ("jdbc:mysql://localhost/toto.sql","root","xxx");
    /home/nissarte/Programmes/test/src/test/Connection.java:34: cannot find symbol
    symbol  : variable conn
    location: class test.Connection
                Statement stmt = conn.createStatement();
    2 errors
    BUILD FAILED (total time: 0 seconds)

    franchement la, je suis dans une impasse total, je ne peux pas tester mes servlets contenant les requetes vers la db, je baisse les bras un peu....

    Modéré par zekey: Titre explicite stp, pas de mot de passe en clair

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    C'est pas la bonne syntaxe pour l'URL... on indique pas l'emplacement du fichier sql, mais la connexion à la base.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "jdbc:mysql://nomdupc/nomdetabase"

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Petit conseil : N'écris JAMAIS tes mots de passe en clairs comme ça dans les forums !!!!!!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    dsl d'insister, mais faut que je regle se probleme aujourd hui

    jai fait comme ta dit donc sa donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connection con =DriverManager.getConnection ("jdbc:mysql://ubuntu/toto","root","ogcnice");
    le message d'erreur est toujours le meme

    uname -n me retourne comme nom d'ordi ubuntu, c'est se que j'avais laissé a l'installation

    la lecture du fichier /etc/hosts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    127.0.0.1	localhost.localdomain	localhost	ubuntu
     
    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts
    [/code]

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    ta variable connexion elle vient des bibliothèques Java ou MySql ?
    Il faut utiliser les bibliothèques de Java.
    Quels sont tes imports ? Tu peux les écrire ?

    (au fait localhost était correct, normalement). mais si après tu utilise ta base depuis une autre machine, ça sera mieux.

  6. #6
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Premiere chose, edite tes messages pour remplacer tes mots de passe par xxxxxx.

    Ensuite, je ne sais pas si c'ets une erreur de copier/coller, mais tu declares
    mais tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Statement stmt = conn. ...
    Pour finir, tu sembles avoir un conflit de nom de classe en java.sql.Connection et test.Connection qui doit etre une classe que tu as defini dans le package test

    Pour resoudre ce probleme de conflit, remplace
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Connection conn ...

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Il faudra ensuite faire des close
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    con.close();
    stmt.close();
    Tu devrais utiliser un éditeur java avancé comme Eclipse, ces erreurs là il te les marque avant de compiler !
    Sinon la base n'est pas fermée ça t'occasionnera pas mal de problèmes !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    pour le mot de passe, c'etait juste un exemple, non les vrais.

    merci pour vos conseils, j'ai trouvé mon erreur, que je ne veux pas dire tellement elle est stupide!
    merci, c'est toujours sur des erreurs a la con que l'on bloque!

  9. #9
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    le numéro de port, il est pas obligatoire dans la chaîne de connexion ?
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  10. #10
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Le numéro de port, il est obligatoire si tu utilise un port particulier. Si tu prend le port par défaut, je ne crois pas que ce soit indispensable.

    Avant de répondre j'ai regardé l'aide MySql officielle.

  11. #11
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    ok c'était juste pour savoir thx
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    bon sa marchait sous linux, sous windows non, le code de ma servlet est :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    /*
     * ServletConnection.java
     *
     * Created on 31 mai 2001, 12:42
     */
     
    import java.io.*;
    import java.net.*;
    import java.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
     
    /**
     *
     * @author Nissarte
     * @version
     * Code pour se connecter à une base de données Mysql depuis une servlet java. 
     */
    public class ServletConnection extends HttpServlet {
     
        /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * @param request servlet request
         * @param response servlet response
         */
     
       private Connection con;
       private PrintWriter out;
       private Statement stmt;
     
       public void init(ServletConfig conf) throws ServletException
         {
         super.init(conf);
         try
         {
             String  NomDriver ="mysql-connector-java-3.1.12-bin.jar";
             Class.forName(NomDriver).newInstance();   
             System.out.println("Chargement du pilote Mysql réussi"); 
         }catch(Exception e)
          {
             System.err.print("Erreur de chargement du pilote : ");
             System.err.println(e.getMessage());
          }
         try{
             con =DriverManager.getConnection ("jdbc:mysql://localhost/mysql/test");
             System.out.println("Connection base de donnée réussi");
         }catch(SQLException sqle)
          {
             System.err.print("Erreur connexion base de donnée : ");
             System.err.println(sqle.getMessage());
         } 
         }
     
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
         try
           {
           out = response.getWriter();
           out.println("<html><head><title>");
           out.println("JDBC Servlet");
           out.println("</title></head><body>");
     
           stmt = con.createStatement();
           ResultSet rs = stmt.executeQuery("SELECT * FROM essai");
           out.println("<UL>");
     
           while(rs.next())
             {
             out.println("<LI>" + rs.getString("Nom"));
             }
           out.println("</UL>");
           rs.close();
           stmt.close();
           }
         catch(SQLException e)
           {
           out.println("Exception SQL");
           }
         catch(IOException e)
           {
           }
     
         out.println("</body></html>");
         out.close();
         }
     
     
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /** Handles the HTTP <code>GET</code> method.
         * @param request servlet request
         * @param response servlet response
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
     
        /** Handles the HTTP <code>POST</code> method.
         * @param request servlet request
         * @param response servlet response
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
     
        /** Returns a short description of the servlet.
         */
        public String getServletInfo() {
            return "Short description";
        }
        // </editor-fold>
    }

    quand je veux me connecter a ma base de donnée, le serveur me renvoi cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INFO: Le rechargement de ce contexte a démarré
    Erreur de chargement du pilote : mysql-connector-java-3.1.12-bin.jar
    Erreur connexion base de donnée : No suitable driver
    je comprends vraiment pas la, j'ai sans doute effectué une erreur grossière mais ou? je suis sous win xp avec netbeans

  13. #13
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    dans le forname c'est le nom de la classe, pas du jar, non ?

    ("com.mysql.jdbc.Driver")
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  14. #14
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Deux questions,
    - tu as bien créé ta base sous windows ?
    - tu as bien la même version de mysql ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    j'ai installé la derniere version de easyphp, j'ai telecharger le driver sur le site de mysql, donc j'imagine que c'est bon. ma base je l'ai crée avec phpmyadmin, elle existe toujours. Est ce un probleme d'emplacement du driver?

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    j'ai trouvé quelqu'un sur un autre forum qui avait le meme probleme que moi, on lui a donné comme solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     c une erreur de classpath : il faut que tu mettes le driver jdbc de mysql dans $CATALINA_HOME/common/lib
    comment on modifie le classpath? est ce moi qui est mis le driver au mauvaise endroit, dans mes cours, il est indiqué de le placé dans le repertoire du projet où les .class sont générés

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    voila j'ai trouvé, je donne l'info au cas ou quelqu'un se retrouve dans le meme cas, sa lui fera gagné beaucoup de temps; il faut mettre le driver dans le repertoire C:\Program Files\netbeans-5.0\enterprise2\jakarta-tomcat-5.5.9\common\lib, pour charger le driver.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    nouveau probleme, je touche aux but pour le projet, mais sa coince encore a se niveau, lorsque je veux inserer des lignes dans ma base de données, j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Chargement du pilote Mysql réussi
    Connection base de donnée réussi
    Erreur ici
    Result Set not updatable.This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, the query must select only one table, and must select all primary keys from that table. See the JDBC 2.1 API Specification, section 5.6 for more details.
    pourtant comme la faq jdbc l'énonce, mon code est celui ci :

    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
    try{
                con =DriverManager.getConnection ("jdbc:mysql://localhost/test","root","ogcnice");
                System.out.println("Connection base de donnée réussi");
                }catch(SQLException sqle)
                {
                    System.err.print("Erreur connexion base de donnée : ");
                    System.err.println(sqle.getMessage());
                } 
     
                Statement stmt = con.createStatement(
                ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE);
                ResultSet rs = stmt.executeQuery("SELECT * FROM essai");
                // on se place sur la ligne à insérer
                rs.moveToInsertRow();
                //on renseigne les différents champs
                rs.updateString("Grade",Grade);
                rs.updateString("Nom",Nom);
                //on insère effectivement la nouvelle ligne
                rs.insertRow();
                rs.close();
                stmt.close();
                con.close();
                this.if_connect=true;
            }catch(SQLException g){
               System.out.println("Erreur ici");
               System.err.println(g.getMessage());
               this.if_connect=false;
            }
    j'applique texto se que dit la faq, erreur de newbies j'imagine, mais c'est certain que le cours l'année derniere sur les jdbc du cnam de lyon a etait vraiment abordé de maniere legere.
    merci d'avance pour votre aide

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    Bonsoir

  20. #20
    Membre habitué Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Points : 163
    Points
    163
    Par défaut
    Il faut que tu joues avec les paramètres de Connection.createStatement(...) essayes déjà la méthode sans arguments qui te crée un statment du type (from javadoc):
    Result sets created using the returned Statement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY.
    Ensuite essayes les différentes options de configuration des statements (voir la javadoc ResultSet). Cela permet de définir si par exemple les autres requêtes peuvent voir tes modifications si tu ne les as pas commitées
    Pushing the limits ...

Discussions similaires

  1. [JDBC] Problème de connexion à partir d'une servlet
    Par wafaaemi dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 22/08/2011, 14h20
  2. jdbc : problème de connexion à une source de données
    Par hanafimohammed dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/06/2009, 13h22
  3. [JDBC]Problème de connexion
    Par ehmppowa dans le forum JDBC
    Réponses: 2
    Dernier message: 19/09/2008, 10h41
  4. [JDBC] Problème de connexion
    Par Pipo95 dans le forum JDBC
    Réponses: 7
    Dernier message: 11/07/2008, 22h14
  5. [JDBC]problème de connexion
    Par popov2 dans le forum JDBC
    Réponses: 15
    Dernier message: 28/12/2005, 14h24

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