java.sql.SQLException: nessun driver adatto trovato per jdbc: mysql: // localhost: 3306 / dbname

Ho questo programma 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(); } } } 

Lo compilo in questo modo:

 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 

Ottengo questo errore:

 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) 

Che cosa sto facendo di sbagliato?

Assicurati di eseguire prima questo:

 Class.forName("com.mysql.jdbc.Driver"); 

Ciò impone al driver di registrarsi, in modo che Java sappia come gestire le stringhe di connessione del database.

Per ulteriori informazioni, consultare il riferimento a MySQL Connector .

Devi caricare il jdbc driver . Considera sotto il codice.

 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(); } 

Un esempio di recupero di dati da una tabella con colonne column1, column2, column3 column4, cloumn1 e 2 hold int valori e column 3 e 4 hold varchar(10)

 import java.sql.*; // need to import this as the STEP 1. Has the classs 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) ie 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"); } } 

Potrebbe non aver copiato il MySQL connector/J file jar MySQL connector/J nella cartella lib e quindi questo file deve trovarsi nel classpath.

Se non lo hai fatto, per favore fammi sapere che elaborerò la risposta

Nel tuo codice manca Class.forName("com.mysql.jdbc.Driver");

Questo è ciò che ti manca per avere tutto ciò che funziona.

Ho avuto lo stesso problema, il mio codice è qui sotto:

 private Connection conn = DriverManager.getConnection(Constant.MYSQL_URL, Constant.MYSQL_USER, Constant.MYSQL_PASSWORD); private Statement stmt = conn.createStatement(); 

Non ho caricato la class del driver, ma funziona localmente, posso interrogare i risultati di MySQL, tuttavia, non funziona quando lo distribuisco a Tomcat e si verificano gli errori seguenti:

 No suitable driver found for jdbc:mysql://172.16.41.54:3306/eduCloud 

quindi ho caricato la class del driver, come di seguito, quando ho visto altre risposte pubblicate:

 Class.forName("com.mysql.jdbc.Driver"); 

Ora funziona! Non so perché funziona bene a livello locale, ho bisogno del tuo aiuto, grazie mille!

Tutte le risposte qui usano Class.forName("my.vandor.Driver"); linea per caricare il driver.

Come alternativa (migliore), è ansible utilizzare la class helper DriverManager che fornisce una serie di metodi per gestire i propri driver JDBC.

Potresti volere

  1. Utilizzare DriverManager.registerDriver(driverObject); per registrare il tuo driver nella sua lista di driver

Registra il driver specificato con DriverManager. Una class di driver appena caricata dovrebbe chiamare il metodo registerDriver per farsi conoscere da DriverManager. Se il driver è attualmente registrato, non viene eseguita alcuna azione

  1. Utilizzare DriverManager.deregisterDriver(driverObject); rimuoverlo.

Rimuove il driver specificato dall’elenco dei driver registrati di DriverManager.

Esempio:

 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); 

o meglio ancora, usa un DataSource

prova questo

 String url = "jdbc:mysql://localhost:3306/"; String user = ""; String password = ""; conn = DriverManager.getConnection(url, user, password); 

Ho avuto un problema simile, basta verificare la porta su cui è in esecuzione il server MySQL, che risolverà il problema

Ad esempio, il mio codice era:

 Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8080/bddventas","root",""); 

io cambio la stringa in

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

e voilà !!, questo workd perché il mio server era in esecuzione su quella porta

Spero che questo aiuto