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 :

[debutant] connection BD impossible


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut [debutant] connection BD impossible
    Salut,

    Je souhaite me connecter à une base de données. Voici un début de code écrit, mais je n'arrive pas à me connecter (mysql d'easyphp).
    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
    import java.sql.*;
    /*
     * Cette classe permet de se connecter à une base de données
     */
    public class connectionBD {
      // constructeur
      public connectionBD () {
     
      }
      // Methode : Afficher message
      private static void affiche(String message) {
          System.out.println(message);
       }
     
      private static void arret(String message) {
          System.err.println(message);
          System.exit(99);
       }
     
      //Methode chargement du pilote
      public void connectionDriver(String driver) {
          try {
              Class.forName(driver);
           } catch (ClassNotFoundException e) {
              System.out.println("Impossible de charger le pilote "+driver);
           }
     
      }
     
      // Methode connection BD
      public void connectionDatabase (String url, String login, String password) {
    	  try {
    		  Connection con = null;
    	      con = DriverManager.getConnection(url,login,password);
    	  } catch (SQLException e) {
    		  arret("Connection a la base de données impossible");
    	  }
     
      }
      public static void main(String[] args) {
    	  connectionBD ConnectBD = new connectionBD();
    	  // autre driver : sun.jdbc.odbc.JdbcOdbcDriver et com.mysql.jdbc.Driver
    	  // chargement du pilote
    	  String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    	  affiche("Pilote "+driver+" en cours de chargement");
    	  ConnectBD.connectionDriver(driver);
    	  affiche("Pilote "+driver+" chargee");
     
    	  // connexion BD
    	  String database = "test";
    	  affiche("connection à la base de données : '"+database+"' en cours");
    	  ConnectBD.connectionDatabase(
    			  "jdbc:mysql://127.0.0.1/"+database,
    			  "root",
    			  ""
    	  );
    	  affiche("connection à la base de données '"+database+"' OK");
     
      }
    }
    Je n'ai pas de messages d'erreurs dans mon code.

    resultat :
    Pilote sun.jdbc.odbc.JdbcOdbcDriver chargee
    connection à la base de données : 'test' en cours
    Connection a la base de données impossible
    Merci,

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    pas d'idées?

  3. #3
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Donne nous la trace de ton exception (e.printStacktrace()) ... ça nous en apprendra plus ...

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	  } catch (SQLException e) {
    		  arret("Connection a la base de données impossible"+e);
    	  }
    j'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pilote com.mysql.jdbc.Driver chargee
    connection à la base de données : 'test' en cours
    Connection a la base de données impossiblejava.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test
    en utilisant le driver
    sun.jdbc.odbc.JdbcOdbcDriver ou com.mysql.jdbc.Driver
    Merci

  5. #5
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    dans la FAQ JDBc, il est dit :

    En pratique, à cause d'implémentations imparfaites des spécifications, il sera parfois nécessaire d'utiliser cette syntaxe :

    Class.forName(nomDriver).newInstance();
    Ca vaut peut être le coup d'essayer ça ...

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    si j'ecris ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      public void connectionDriver(String driver) {
          try {
              //Class.forName(driver);
              Class.forName(driver).newInstance();
           } catch (ClassNotFoundException e) {
              System.out.println("Impossible de charger le pilote "+driver);
           }
     
      }
    j'ai un message d'erreur à la compilation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    	Unhandled exception type InstantiationException
    	Unhandled exception type IllegalAccessException
     
    	at connectionBD.connectionDriver(connectionBD.java:24)
    	at connectionBD.main(connectionBD.java:47)

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Par défaut
    Citation Envoyé par djibril Voir le message
    j'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pilote com.mysql.jdbc.Driver chargee
    connection à la base de données : 'test' en cours
    Connection a la base de données impossiblejava.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test
    en utilisant le driver
    Cette erreur ce declanche quand tu n'a pas de driver pour te connecté avec le driver que tu demande.

    j'ai vue nulpart dans ton code que tu chargeais un driver mysql, par contre tu charge bien le driver ODBC.

    il devrai avoir un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Class.forName(com.mysql.jdbc.Driver).newIntance();
    dans ton cote plutot qu'ODBC je crois.
    En plus faut que avoir l'acces a ton jar avec ton driver dans ton classpath.

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bon le problème est résolu :
    J'ai télécharger le driver à cette adresse : http://dev.mysql.com/downloads/connector/j/5.1.html

    J'ai dezippé le fichier mis le fichier mysql-connector-java-5.0.8.tar.gz
    et j'ai récupérer le fichier
    mysql-connector-java-5.0.8/mysql-connector-java-5.0.8-bin.jar
    que j'ai mis dans le repertoire C:\Program Files\Java\jdk1.6.0_02\jre\lib\ext

    J'ai ensuite crée les variables d'environnement suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JAVA_HOME  =>   C:\Program Files\Java\jdk1.6.0_02
    CLASSPATH  =>   .:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/jre/lib/ext/mysql-connector-java-5.0.8-bin.jar
    Et voilà maintenant mon script dans eclipse :
    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
     
    import java.sql.*;
    /*
     * Cette classe permet de se connecter à une base de données
     */
    public class connectionBD {
      // constructeur
      public connectionBD () {
     
      }
      // Methode : Afficher message
      private static void affiche(String message) {
          System.out.println(message);
       }
     
      private static void arret(String message) {
          System.err.println(message);
          System.exit(99);
       }
     
      //Methode chargement du pilote
      public void connectionDriver(String driver) {
          try {
        	  affiche("Pilote "+driver+" en cours de chargement");
        	  Class.forName(driver).newInstance();
        	  affiche("Pilote "+driver+" chargee");
          } catch (Exception e) {
        	  arret("Impossible de charger le pilote "+driver);
           }
     
      }
     
      // Methode connection BD
      public void connectionDatabase (String url, String login, String password) {
    	  try {
    		  affiche("connection à la base de données : '"+url+"' en cours");
    		  Connection con = DriverManager.getConnection(url,login,password);
    		  affiche("connection à la base de données OK");
    	  } catch (SQLException e) {
    		  arret("Connection a la base de données impossible");
    	  }
     
      }
      public static void main(String[] args) {
    	  connectionBD ConnectBD = new connectionBD();
    	  /* Driver :
    	   * sun.jdbc.odbc.JdbcOdbcDriver
    	   * com.mysql.jdbc.Driver
    	   * org.postgresql.Driver
    	   */
     	  ConnectBD.connectionDriver("com.mysql.jdbc.Driver");  
     
    	  // connexion BD
    	  String database = "test";
    	  ConnectBD.connectionDatabase(
    			  "jdbc:mysql://localhost/"+database,
    			  "root",
    			  ""
    	  );
     
     
      }
    }
    Et j'obtiens le message :
    Pilote com.mysql.jdbc.Driver chargee
    connection à la base de données : 'jdbc:mysql://localhost/test' en cours
    connection à la base de données OK
    S'il y a une autre façon plus propre de procéder, je suis preneur.
    Merci

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En général tu ne vas pas trop rajouter de jar au répertoire lib/ext de la JRE (suivant les droits les utilisateurs ne peuvent y accéder).

    En fait tu peux avoir ton classpath un peu n'importe où. La seule chose à faire est de le setter au moment du démarrage avec l'option -cp de la commande java. Quand tu utilises un IDE c'est un poil différent, c'est au niveau des propriétés de ton projet que tu configure çà (sous eclipse clic droit sur le projet, propriétés, build path (ou chemni de compilation en VF) et là tu ajoutes le jar du driver en tant qu'external jar)

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Ok, merci pour ta remarque

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

Discussions similaires

  1. [Debutant]Connection a une Base de Donnees: NullPointerException
    Par Romain93 dans le forum Tomcat et TomEE
    Réponses: 14
    Dernier message: 04/07/2006, 18h10
  2. [debutant]connection osql sur msde
    Par ChristopheOce dans le forum Outils
    Réponses: 2
    Dernier message: 15/02/2006, 15h53
  3. Iptables - Ping & Connection 80 impossible vers sois même
    Par mickael.be dans le forum Sécurité
    Réponses: 3
    Dernier message: 03/06/2005, 01h47
  4. [debutant] connection à une BDD MySQL
    Par Golork dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/03/2005, 16h51
  5. Réponses: 5
    Dernier message: 21/04/2004, 11h43

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