Java.SQL.SQLException: aucun pilote approprié n'a été trouvé pour jdbc: mysql: / / localhost:3306 / dbname [dupliquer]
cette question a déjà une réponse ici:
j'ai ce programme Java: MySQLConnectExample.java
import java.sql.*;
import java.util.Properties;
public class MySQLConnectExample {
public static void main(String[] args) {
Connection conn1 = null;
Connection conn2 = null;
Connection conn3 = null;
try {
String url1 = "jdbc:mysql://localhost:3306/aavikme";
String user = "root";
String password = "aa";
conn1 = DriverManager.getConnection(url1, user, password);
if (conn1 != null)
System.out.println("Connected to the database test1");
String url2 = "jdbc:mysql://localhost:3306/aavikme?user=root&password=aa";
conn2 = DriverManager.getConnection(url2);
if (conn2 != null) {
System.out.println("Connected to the database test2");
}
String url3 = "jdbc:mysql://localhost:3306/aavikme";
Properties info = new Properties();
info.put("user", "root");
info.put("password", "aa");
conn3 = DriverManager.getConnection(url3, info);
if (conn3 != null) {
System.out.println("Connected to the database test3");
}
} catch (SQLException ex) {
System.out.println("An error occurred. Maybe user/password is invalid");
ex.printStackTrace();
}
}
}
je le compile comme ceci:
E:java mysql code driver>javac MySQLConnectExample.java
E:java mysql code driver>java -cp mysql-connector-java-3.0.11-stable-bin.jar;.
MySQLConnectExample
je reçois cette erreur:
An error occurred. Maybe user/password is invalid
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/
aavikme
at java.sql.DriverManager.getConnection(DriverManager.java:596)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at MySQLConnectExample.main(MySQLConnectExample.java:20)
Qu'est-ce que je fais de mal?
9 réponses
assurez-vous d'exécuter ce premier:
Class.forName("com.mysql.jdbc.Driver");
cela oblige le pilote à s'enregistrer lui-même, de sorte que Java sait comment gérer ces chaînes de connexion de base de données.
pour plus d'information, voir le référence du connecteur MySQL .
vous devez charger jdbc driver
. Envisager de Code ci-dessous.
try {
Class.forName("com.mysql.jdbc.Driver");
// connect way #1
String url1 = "jdbc:mysql://localhost:3306/aavikme";
String user = "root";
String password = "aa";
conn1 = DriverManager.getConnection(url1, user, password);
if (conn1 != null) {
System.out.println("Connected to the database test1");
}
// connect way #2
String url2 = "jdbc:mysql://localhost:3306/aavikme?user=root&password=aa";
conn2 = DriverManager.getConnection(url2);
if (conn2 != null) {
System.out.println("Connected to the database test2");
}
// connect way #3
String url3 = "jdbc:mysql://localhost:3306/aavikme";
Properties info = new Properties();
info.put("user", "root");
info.put("password", "aa");
conn3 = DriverManager.getConnection(url3, info);
if (conn3 != null) {
System.out.println("Connected to the database test3");
}
} catch (SQLException ex) {
System.out.println("An error occurred. Maybe user/password is invalid");
ex.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
exemple d'extraction de données d'un tableau comportant les colonnes column1, columnn2 ,column3, column4, cloumn1 et 2 tenir les valeurs int et les colonnes 3 et 4 tenir varchar(10)
import java.sql.*;
// need to import this as the STEP 1. Has the classes that you mentioned
public class JDBCexample {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://LocalHost:3306/databaseNameHere";
// DON'T PUT ANY SPACES IN BETWEEN and give the name of the database (case insensitive)
// database credentials
static final String USER = "root";
// usually when you install MySQL, it logs in as root
static final String PASS = "";
// and the default password is blank
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// registering the driver__STEP 2
Class.forName("com.mysql.jdbc.Driver");
// returns a Class object of com.mysql.jdbc.Driver
// (forName(""); initializes the class passed to it as String) i.e initializing the
// "suitable" driver
System.out.println("connecting to the database");
// opening a connection__STEP 3
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// executing a query__STEP 4
System.out.println("creating a statement..");
stmt = conn.createStatement();
// creating an object to create statements in SQL
String sql;
sql = "SELECT column1, cloumn2, column3, column4 from jdbcTest;";
// this is what you would have typed in CLI for MySQL
ResultSet rs = stmt.executeQuery(sql);
// executing the query__STEP 5 (and retrieving the results in an object of ResultSet)
// extracting data from result set
while(rs.next()){
// retrieve by column name
int value1 = rs.getInt("column1");
int value2 = rs.getInt("column2");
String value3 = rs.getString("column3");
String value4 = rs.getString("columnm4");
// displaying values:
System.out.println("column1 "+ value1);
System.out.println("column2 "+ value2);
System.out.println("column3 "+ value3);
System.out.println("column4 "+ value4);
}
// cleaning up__STEP 6
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
// handle sql exception
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception for class.forName
e.printStackTrace();
}finally{
//closing the resources..STEP 7
try {
if (stmt != null)
stmt.close();
} catch (SQLException e2) {
e2.printStackTrace();
}try {
if (conn != null) {
conn.close();
}
} catch (SQLException e2) {
e2.printStackTrace();
}
}
System.out.println("good bye");
}
}
vous n'avez peut-être pas copié le fichier jar MySQL connector/J
dans le dossier lib, et ce fichier doit être dans classpath.
Si vous ne l'avez pas fait, s'il vous plaît laissez-moi savoir, je élabore la réponse
j'ai eu le même problème, mon code est ci-dessous:
private Connection conn = DriverManager.getConnection(Constant.MYSQL_URL, Constant.MYSQL_USER, Constant.MYSQL_PASSWORD);
private Statement stmt = conn.createStatement();
Je n'ai pas chargé la classe de pilote, mais cela fonctionne localement, je peux interroger les résultats de MySQL, cependant, cela ne fonctionne pas quand je le déploie sur Tomcat, et les erreurs ci-dessous se produisent:
No suitable driver found for jdbc:mysql://172.16.41.54:3306/eduCloud
donc j'ai chargé la classe de conducteur, comme ci-dessous, quand j'ai vu d'autres réponses posté:
Class.forName("com.mysql.jdbc.Driver");
ça marche maintenant! Je ne sais pas pourquoi cela fonctionne bien localement, j'ai besoin de votre aider, merci beaucoup!
dans votre code il vous manque Class.forName("com.mysql.jdbc.Driver");
C'est ce qui vous manque pour que tout fonctionne.
Toutes les réponses ici utiliser le Class.forName("my.vandor.Driver");
pour charger le pilote.
comme (meilleure) alternative, vous pouvez utiliser la classe d'aide DriverManager
qui vous fournit une poignée de méthodes pour manipuler votre pilote JDBC/s.
Vous pourriez vouloir
- utilisez
DriverManager.registerDriver(driverObject);
pour inscrire votre pilote à sa liste de pilotes
enregistre le conducteur donné avec le DriverManager. Une classe de pilotes nouvellement chargée devrait appeler la méthode registerDriver pour se faire connaître au DriverManager. Si le conducteur est actuellement inscrit, aucune mesure n'est prise
- utilisez
DriverManager.deregisterDriver(driverObject);
pour l'enlever.
supprime le pilote spécifié de la liste des pilotes enregistrés de DriverManager.
exemple:
Driver driver = new oracle.jdbc.OracleDriver();
DriverManager.registerDriver(driver);
Connection conn = DriverManager.getConnection(url, user, password);
// ...
// and when you don't need anything else from the driver
DriverManager.deregisterDriver(driver);
ou mieux encore, utilisez un DataSource
essayez cette
String url = "jdbc:mysql://localhost:3306/<dbname>";
String user = "<username>";
String password = "<password>";
conn = DriverManager.getConnection(url, user, password);
j'ai eu un problème similaire, il suffit de vérifier le port où votre serveur Mysql est en cours d'exécution, qui va résoudre le problème
par exemple, mon code était:
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8080/bddventas","root","");
je change la chaîne en
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bddventas","root","");
et voilà!!, cela a fonctionné parce que mon serveur fonctionnait sur ce port
Espérons que cette aide