java - plugin - mysql connector jar
java.sql.SQLException: No se encontrĂ³ un controlador adecuado para jdbc: mysql:// localhost: 3306/dbname (9)
Esta pregunta ya tiene una respuesta aquí:
Tengo este programa de 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 así:
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
Me sale este error:
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é estoy haciendo mal?
Asegúrate de ejecutar esto primero:
Class.forName("com.mysql.jdbc.Driver");
Esto obliga al controlador a registrarse, por lo que Java sabe cómo manejar esas cadenas de conexión de base de datos.
Para obtener más información, consulte la referencia del conector de MySQL .
En su código, falta Class.forName("com.mysql.jdbc.Driver");
Esto es lo que te hace falta para que todo funcione.
Es posible que no haya copiado el archivo MySQL connector/J
jar en la carpeta lib y que este archivo deba estar allí en classpath.
Si no lo ha hecho, hágamelo saber que elaboraré la respuesta
Tienes que cargar el jdbc driver
. Considere el siguiente código.
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();
}
Todas las respuestas aquí usan Class.forName("my.vandor.Driver");
línea para cargar el controlador.
Como alternativa (mejor), puede utilizar la clase de ayuda DriverManager
que le proporciona varios métodos para manejar sus controladores JDBC.
Tu podrías querer
- Use
DriverManager.registerDriver(driverObject);
para registrar su controlador a su lista de controladores
Registra el controlador dado con el DriverManager. Una clase de controlador recién cargada debe llamar al método registerDriver para darse a conocer al DriverManager. Si el controlador está actualmente registrado, no se toma ninguna medida
- Utilice
DriverManager.deregisterDriver(driverObject);
para eliminarlo
Elimina el controlador especificado de la lista de controladores registrados del DriverManager.
Ejemplo:
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 mejor aún, use un DataSource
Tuve el mismo problema, mi código está a continuación:
private Connection conn = DriverManager.getConnection(Constant.MYSQL_URL, Constant.MYSQL_USER, Constant.MYSQL_PASSWORD);
private Statement stmt = conn.createStatement();
No he cargado la clase de controlador, pero puedo trabajar en local, puedo consultar el resultado de MySQL, sin embargo, no funciono cuando lo despliegue en Tomcat, y ocurre los siguientes errores:
No suitable driver found for jdbc:mysql://172.16.41.54:3306/eduCloud
así que cargué la clase de controlador de la siguiente manera cuando veo la respuesta a esta pregunta de la página:
Class.forName("com.mysql.jdbc.Driver");
Ahora funciona ! No sé por qué funciona bien en local, ¡necesito tu ayuda, muchas gracias!
Tuve un problema similar, solo verifique el puerto donde se ejecuta su servidor Mysql, que resolverá el problema
Por ejemplo, mi código era:
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8080/bddventas","root","");
cambio la cuerda a
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bddventas","root","");
y voila !!, esto funciona porque mi servidor se estaba ejecutando en ese puerto
Espero que esto ayude
Un ejemplo de recuperación de datos de una tabla con columnas column1, column2, column3 column4, cloumn1 y 2 contiene valores int y columnas 3 y 4 hold 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");
}
}
prueba esto
String url = "jdbc:mysql://localhost:3306/<dbname>";
String user = "<username>";
String password = "<password>";
conn = DriverManager.getConnection(url, user, password);