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();
}
}
}
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);
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.
Pour moi, c'était oublier d'inclure le pilote MySQLJDBC dans les bibliothèques du projet. DOH!
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