java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/dbname
Solution 1
Make sure you run this first:
Class.forName("com.mysql.jdbc.Driver");
This forces the driver to register itself, so that Java knows how to handle those database connection strings.
For more information, see the MySQL Connector reference.
Solution 2
You have to load jdbc driver
. Consider below Code.
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();
}
Solution 3
I had the same problem, my code is below:
private Connection conn = DriverManager.getConnection(Constant.MYSQL_URL, Constant.MYSQL_USER, Constant.MYSQL_PASSWORD);
private Statement stmt = conn.createStatement();
I have not loaded the driver class, but it works locally, I can query the results from MySQL, however, it does not work when I deploy it to Tomcat, and the errors below occur:
No suitable driver found for jdbc:mysql://172.16.41.54:3306/eduCloud
so I loaded the driver class, as below, when I saw other answers posted:
Class.forName("com.mysql.jdbc.Driver");
It works now! I don't know why it works well locally, I need your help, thank you so much!
Solution 4
An example of retrieving data from a table having columns column1, column2 ,column3 column4, cloumn1 and 2 hold int values and column 3 and 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");
}
}
Solution 5
You might have not copied the MySQL connector/J
jar file into the lib folder and then this file has to be there in the classpath.
If you have not done so, please let me know I shall elaborate the answer
user3416261
Updated on July 09, 2022Comments
-
user3416261 almost 2 years
I have this Java program:
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(); } } }
I compile it like this:
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
I get this 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)
What am I doing wrong?
-
Gimby about 10 yearsIts legacy code but it will most likely fix this problem because this is a very old driver. Downloading a more recent driver version will likely also make the problem go away without changing the code.
-
user3416261 about 10 yearscompile time error class not found exception !!!
-
unknown about 10 yearssee my modified answer.
-
user3416261 about 10 yearscompile time error class not found exception !!!
-
user3416261 about 10 yearswhat you have modified i don't see any change in code import
-
user3416261 about 10 yearsthis is error while compiling E:\java mysql code driver>javac MySQLConnectExample.java MySQLConnectExample.java:16: error: unreported exception ClassNotFoundException; must be caught or declared to be thrown Class.forName("com.mysql.jdbc.Driver"); ^ 1 error
-
user3416261 about 10 years4.bp.blogspot.com/-ZwT6cx-fjH8/UyHhdxT3OeI/AAAAAAAAACU/… THIS IS HOW I STORED MY DATA
-
user3416261 about 10 yearsthis is error while compiling E:\java mysql code driver>javac MySQLConnectExample.java MySQLConnectExample.java:16: error: unreported exception ClassNotFoundException; must be caught or declared to be thrown Class.forName("com.mysql.jdbc.Driver"); ^ 1 error
-
unknown about 10 yearsI have added
ClassNotFoundException
. Try it. -
RuntimeException about 10 yearsJust a suggestion. The -cp argument on command line must point to the full path of the driver jar . Like -cp c:\jars\driverjar.jar;.
-
Ky - about 9 yearson line
Class.forName("com.mysql.jdbc.Driver");
:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
-
Ky - about 9 yearson line
Class.forName("com.mysql.jdbc.Driver");
:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
-
LZH almost 8 yearsby default mysql listen to port 3306
-
lepe over 7 yearsEven though that line is not required its very helpful to know if the driver is correctly loaded.
-
So S over 5 yearsI added the
Class.forName ...
line just before establishing the connection. -
Kelvin Bouma over 2 yearsThis is deprecated, please use "com.mysql.cj.jdbc.Driver" instead