web-dev-qa-db-fra.com

java.sql.SQLException: aucun pilote approprié trouvé pour le test localhost

En essayant de me connecter à mysql, j'obtiens toujours l'erreur suivante: 

Java.sql.SQLException: Aucun pilote approprié trouvé pour le test localhost

J'ai déjà inclus le mysql-connector.jar dans le /WEB-INF/lib dans mon application. Que dois-je configurer pour que cela fonctionne? Dois-je ajouter quelque chose dans web.xml? Je n'utilise pas l'appengine.

Voici mon code sur le serveur:

package com.mysql.server;

import Java.sql.Connection; 
import Java.sql.DriverManager;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.mysql.client.ConnDb;

public class ConnDbImpl extends RemoteServiceServlet implements ConnDb {
   public Connection con;
   @Override
    public String tryConn() {
     try{
       String Host = "localhost";
       String db = "test";
       String driver = "com.mysql.jdbc.Driver";
       String user = "root";
       String pass = "pwd";

       Class.forName(driver).newInstance();
       con = DriverManager.getConnection(Host+db, user, pass);
       return "Connected to Database";
     } catch(Exception ex) {
         return ex.toString();
     }    
   } 
}
11
user1035079

Vous obtiendrez cette exception si l'URL JDBC n'est acceptée par aucun des pilotes JDBC chargés, conformément à la méthode Driver#acceptsURL() . Vous avez en fait oublié le préfixe d'URI spécifique au pilote JDBC. Pour le pilote MySQL JDBC, il s'agit de jdbc:mysql://. L'URL de connexion complète devrait ressembler à ceci:

con = DriverManager.getConnection("jdbc:mysql://localhost/test", user, pass);

Voir également:

22
BalusC

J'ai trouvé une autre cause pour ce message d'erreur. Dans mon cas, l'utilisateur n'avait tout simplement aucun privilège sur la base de données, par exemple. à la table sélectionnée. Chers développeurs de pilotes, pourquoi utilisez-vous des messages d'erreur aussi trompeurs? Beaucoup de gens ont de vrais problèmes avec ça.

6
Richard

Pour moi, c'était oublier d'inclure le pilote MySQLJDBC dans les bibliothèques du projet. DOH!

0
S M Slack

Cela donnait cette erreur:

Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/lib_db","root","root");

mais quand j'ai changé cela en: 

Connection connection =DriverManager.getConnection("jdbc:mysql://localhost/db_name?"+"user=root&password=root");

l'erreur était partie

0
SkyTreasure