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 :

[MySQL] SQLException: No suitable driver


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 48
    Points : 32
    Points
    32
    Par défaut [MySQL] SQLException: No suitable driver
    Bonjour,

    J'avais poster à la suite du sujet portant le même nom mais étant donner que cette erreur survient dans de très nombreux cas (à ce que j'ai compris), je préfère refaire un topic et tout détailler correctement.

    Je travaille sous java 1.5 et j'ai télécharger la dernière version du Connector J que j'ai mis dans java/.../lib/ext (comme l'indique le tutoriel en liens sur le site de mysql. j'ai mis le .jar, pas le .rar ^^).

    Voici mon 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
    31
    32
    33
    34
    35
     
    ...
    import java.sql.*;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import com.mysql.jdbc.Driver;
     
     
    public class maj02
    {	
    	Vector clients = new Vector();
    	Vector fichiers = new Vector();
     
    	public maj02() /*throws SQLException*/ {
    		try {
    			String nomDriver = "driver mysql";
    			try{
    			   Class.forName("com.mysql.jdbc.Driver");
    			}catch(ClassNotFoundException cnfe){
    			   System.out.println("La classe "+nomDriver+" n'a pas été trouvée");
    			   cnfe.printStackTrace();
    			}
    			//Class.forName("com.mysql.jdbc.Driver").newInstance();
    			//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
     
    			Connection  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/projetstage", "root", "" );
     
    			listecli();
    			listefich("windows");
     
     
    			con.close();
    		} catch (SQLException ex) {System.out.println(ex);}
            }
            ...
    j'ai essayé avec les deux lignes en commentaire sans plus de succès, j'obtiens toujours la fameuse et unique erreur :
    SQLException: No suitable driver
    Si vous avez une idée d'où peut venir le problème...

    Merci

  2. #2
    Membre actif Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Points : 212
    Points
    212
    Par défaut
    Salut,
    Tu as un problème au niveau de ton classpath.
    Quel IDE utilises-tu? Est-ce une appli web?
    Tu peux déjà vérifier que le jar fais bien partie des librairies que tu charges dans ton projet... Et donne plus d'infos sur ta config.
    En passant, les "import java.sql.*;" et "import com.mysql.jdbc.Driver;" sont inutiles voire même à éviter.
    Et l'ajout de librairies directement dans l'install du jdk, j'trouve ça plutôt moyen!
    A pluche...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Tu as un problème au niveau de ton classpath.
    ...
    Et l'ajout de librairies directement dans l'install du jdk, j'trouve ça plutôt moyen!
    j'ai suivit les instruction du tutoriel en lien sur le site de mysql. ils disent que l'avantage de le mettre la c'est que l'on a pas a le déclarer dans le classpath.

    Actually, the above quotation describes three options instead of just two. To make a long story short, I elected the third option. I extracted the jar file named mysql-connector-java-3.0.15-ga-bin.jar from the zip file and copied it into the folder named c:\j2sdk1.4.2\jre\lib\ext, which is the installation directory tree for the currently installed version of Java on my computer.

    The advantage of doing it this way was that I didn't have to modify the classpath environment variable. The disadvantage is that the next time I upgrade to a new version of Java, I must remember to save the MySQL connector jar file and copy it into the directory tree for my new Java installation.
    Quel IDE utilises-tu? Est-ce une appli web?
    j'utilise JCreator. et mon application est faite pour local, donc pas d'appli web.

    En passant, les "import java.sql.*;" et "import com.mysql.jdbc.Driver;" sont inutiles voire même à éviter.
    très bien, je recommencerais plus ^^

    Tu peux déjà vérifier que le jar fais bien partie des librairies que tu charges dans ton projet...
    je charge bien la librairie (enfin je suppose qu'il le fait vu que je lui ai spécifié dans les propriétés du projet.)

    Et donne plus d'infos sur ta config.
    donc je fonctionne sous windows xp et ma base de données est lancée avec easyphp (créée avec phpmyadmin). je vois pas ce que je peux dire de plus ^^'

  4. #4
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Citation Envoyé par Aethis
    l'avantage de le mettre la c'est que l'on a pas a le déclarer dans le classpath
    Es-tu sur que c'est bien le JDK ds lequel tu as copié ton jar qui est utilisé par JCreator?
    Juste pour y voir plus clair : Essaies de copier le jar du driver dans le même répertoire que tes classes, ou si tu l'exécute ds 1 fenêtre de commande rajoute son path dans le classpath avant d'exécuter ta classe

    Citation Envoyé par Aethis
    je charge bien la librairie (enfin je suppose qu'il le fait vu que je lui ai spécifié dans les propriétés du projet.)
    Ne jamias supposer, tjours vérifier

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Es-tu sur que c'est bien le JDK ds lequel tu as copié ton jar qui est utilisé par JCreator?
    oui, pour plus de sureté, j'ai copié le .jar un peu partout et accéssoirement dans tout les jdk ^^

    Essaies de copier le jar du driver dans le même répertoire que tes classes, ou si tu l'exécute ds 1 fenêtre de commande rajoute son path dans le classpath avant d'exécuter ta classe
    j'ai déjà essayé sans succès, et j'exécute l'appli après compilation grâce à JCreator.

    Ne jamias supposer, tjours vérifier
    c'est surtout que j'ai regardé là où je pouvais, mais étant novice je ne connais pas les subtilités et surtout ou je peux aller regarder ça

  6. #6
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Citation Envoyé par Aethis
    Citation:
    Ne jamias supposer, tjours vérifier
    c'est surtout que j'ai regardé là où je pouvais, mais étant novice je ne connais pas les subtilités et surtout ou je peux aller regarder ça
    C'était 1 plaisanterie...Ne le prends pas mal

    Pour en revenir à ton pb.
    ''SQLException: No suitable driver'' c'est vraiment le seul msg d'erreur que tu as ? Parce que c'est 1 msg SQL.
    Donc si tu ne lèves pas d'exception ''class not found'' avant, je pense que ton driver est bien monté, et que c'est ensuite que tu as 1 pb.
    En regardant ton code, je ne comprend pas comment tu passes la référence à la connection à ta base à la méthode listecli (), tu peux rajouter le code qui interroge la base ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 87
    Points : 89
    Points
    89
    Par défaut
    essayes d'importer directement dans ton projet le "mysql-connector blabla".jar. On verra bien si ça vient d'un probleme d'installation de ton librairie dans ta jdk ou pas...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Pour en revenir à ton pb.
    ''SQLException: No suitable driver'' c'est vraiment le seul msg d'erreur que tu as ? Parce que c'est 1 msg SQL.
    Donc si tu ne lèves pas d'exception ''class not found'' avant, je pense que ton driver est bien monté, et que c'est ensuite que tu as 1 pb.
    En regardant ton code, je ne comprend pas comment tu passes la référence à la connection à ta base à la méthode listecli (), tu peux rajouter le code qui interroge la base ?
    Ce message est bien le seul message d'erreur qui apparaisse.

    et bien pour le moment, je n'y fait rien qui touche à la base ^^'
    tout ce que je cherche a faire (pour le moment) c'est me connecter à la base et fermer la connection après. (c'est pour ça que je ne passe pas la connection à listecli, il n'en a pas besoin puisqu'il n'intéragit pas avec la base ^^)

    Citation Envoyé par clebig
    essayes d'importer directement dans ton projet le "mysql-connector blabla".jar. On verra bien si ça vient d'un probleme d'installation de ton librairie dans ta jdk ou pas...
    je vais essayer de faire ça

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 87
    Points : 89
    Points
    89
    Par défaut
    tiens nous au courant.

  10. #10
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Donc si je résume : le classloader ne lève pas d'exception, donc la classe Driver est trouvée (ou le classloader n'est pas appelé )
    Par contre la methode getConnection déclenche 1 SQLException, donc le Driver n'est pas enregistré. (pour vérifier essaies 1 petit coup de getDrivers () apres le class.forName () et avant le getConnection() )
    Si ça se trouve c'est ton jar qui est pourri. Essaies de télécharger le dernier (ça doit être mysql-connector-java-3.1.13-bin.jar)

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    essayes d'importer directement dans ton projet le "mysql-connector blabla".jar. On verra bien si ça vient d'un probleme d'installation de ton librairie dans ta jdk ou pas...
    bon, alors j'ai chercher et je ne trouve pas comment on fait, on peut faire des "add file" qui se limite aux fichier .java, sinon j'ai spécifier le mysql-connector-blabla.jar dans les "required libraries" mais je ne pense pas que c'est de celà dont tu me parles.

    Si ça se trouve c'est ton jar qui est pourri. Essaies de télécharger le dernier (ça doit être mysql-connector-java-3.1.13-bin.jar)
    je possède le mysql-connector-java-5.0.1-bin.jar (c'est le dernier de disponible sur le site Mysql.)

    j'essaie le truc avec le getDrivers() et je vous tiens au courant.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Bon, alors j'ai modifier mon code pour faire le getDrivers() :

    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
     
    import java.util.*;
    import javax.swing.*;
    import java.awt.*;
    import java.text.*;
    import java.lang.*;
    import java.lang.String;
    import java.io.*;
    import java.awt.event.*;
    import java.sql.*;
     
    public class maj02
    {	
    	public maj02() {
    		try {
    			String nomDriver = "driver mysql";
    			try{
    			   Class.forName("com.mysql.jdbc.Driver");
    			}catch(ClassNotFoundException cnfe){
    			   System.out.println("La classe "+nomDriver+" n'a pas été trouvée");
    			   cnfe.printStackTrace();
    			}
    			DriverManager.getDrivers();
     
    		} catch (SQLException ex) {System.out.println(ex);}
    	}
    ...
    Je ne fais plus grand chose dans le constructeur mais au moins on y voit plus clair.

    suite à la compilation/exécution, j'obtiens toujours ma seule et unique erreur :
    java.sql.SQLException: No Suitable Driver
    je commence sérieusement à douter du driver... j'ai celui-là

  13. #13
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    On va faire autrement. (On va encore en enlever )
    Essaies d'aller chercher le pilote directement sans passer par le classloader.
    Tu remplaces
    class.forName ....
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try
    {
    DriverManager.registerDriver (new com.mysql.jdbc.Driver () );
    Connection  c = DriverManager.getConnection("jdbc:mysql://host:port/base", "user", "password" );
    } 
    catch (SQLException ex) 
    {
    System.out.println (ex);
    }
    Si ton jar n'est pas bon, tu vas te faire jeter à la compile (classe inexistante ou qquechose comme ça)

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    bon, avec ta syntaxe, ça marche. je n'ai aucune erreur à l'éxécution. Je pense que je vais la gardée dans mon appli

    merci bien.

    Sinon il doit y avoir une erreur dans ma syntaxe et je ne vois pas du tout où. je me pencherais dessus à l'occasion car le plus important pour moi, dans l'immédiat, c'est que l'appli fonctionne.

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/08/2012, 09h23
  2. Réponses: 1
    Dernier message: 04/06/2008, 23h22
  3. java.sql.SQLException: No suitable driver found
    Par jpalcluc dans le forum Hibernate
    Réponses: 5
    Dernier message: 31/07/2007, 16h53
  4. [MySQL] SQLException: No suitable driver
    Par ignatius.b dans le forum JDBC
    Réponses: 12
    Dernier message: 07/03/2007, 21h00
  5. java.sql.SQLException: No suitable driver
    Par lunart dans le forum JDBC
    Réponses: 17
    Dernier message: 09/06/2006, 11h54

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