Java.sql.SQLException: no suitable driver found

I am trying to execute a simple query using the DbQuery.java class below, which uses the DbConnector to get a connection from DriverManager.

note :

  • I already enabled "mysql-connector-java-5.1.25-bin.jar" on my classpath through: export CLASSPATH = $ CLASSPATH: /home/me/ocpjp/chapter-10/mysql-connector-java-5.1.25/ mysql-connector-java-5.1.25-bin.jar
  • I can connect to mysql using the "mysql -uroot -ptcial address book" if that matters.
  • also tried to work with the '-cp' argument to no avail.
  • I can get my classC # 3 DbConnect.java to say "Database connection established."
  • Also # 4 DbQueryWorking.java has no problems and provides the expected result.

Could you help me understand what the problem is?

1) DbConnector.java

package com.me.ocpjp.chapter10; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DbConnector{ public static Connection connectToDb() throws SQLException{ String url = "jdbc:mysql//localhost:3306/"; String db = "addressBook"; String username = "root"; String password = "tcial"; return DriverManager.getConnection(url+db, username, password); } } 

2) DbQuery.java

 package com.me.ocpjp.chapter10; import java.sql.Connection ; import java.sql.Statement ; import java.sql.ResultSet ; import java.sql.SQLException ; import com.me.ocpjp.chapter10.DbConnector; public class DbQuery{ public static void main(String[] args){ try(Connection connection = DbConnector.connectToDb(); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("select * from contact")){ System.out.println("ID \tfName \tlName \temail \t\tphoneNo"); while(resultSet.next()){ System.out.println(resultSet.getInt("id") + "\t" + resultSet.getString("firstName") + "\t" + resultSet.getString("lastName") + "\t" + resultSet.getString("email") + "\t" + resultSet.getString("phoneNo") ); } }catch(SQLException sqle){ sqle.printStackTrace(); System.exit(-1); } } } 

3) DbConnect.java

 package com.me.ocpjp.chapter10; import java.sql.Connection; import java.sql.DriverManager; public class DbConnect{ public static void main(String[] args){ String url = "jdbc:mysql://localhost:3306/"; String database = "addressBook"; String userName = "root"; String password = "tcial"; try(Connection connection = DriverManager.getConnection(url+database, userName, password)){ System.out.println("Database connection established"); }catch(Exception e){ System.out.println("Database connectioni NOT established"); e.printStackTrace(); } } } 

4) DbQueryWorking.java

 package com.me.ocpjp.chapter10; import java.sql.Connection ; import java.sql.Statement ; import java.sql.ResultSet ; import java.sql.SQLException ; import java.sql.DriverManager; public class DbQuery{ public static void main(String[] args){ String url = "jdbc:mysql://localhost:3306/"; String database = "addressBook"; String userName = "root"; String password = "tcial"; try(Connection connection = DriverManager.getConnection(url + database, userName, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("select * from contact")){ System.out.println("ID \tfName \tlName \temail \t\tphoneNo"); while(resultSet.next()){ System.out.println(resultSet.getInt("id") + "\t" + resultSet.getString("firstName") + "\t" + resultSet.getString("lastName") + "\t" + resultSet.getString("email") + "\t" + resultSet.getString("phoneNo") ); } }catch(SQLException sqle){ sqle.printStackTrace(); System.exit(-1); } } } 
+4
source share
2 answers

it looks like the url in DbConnector.java wrong. A colon is missing. URL should be:

 jdbc:mysql://localhost:3306/ 

but not

 jdbc:mysql//localhost:3306/ 
+7
source

your URL is incorrect, it does not contain a colon, it should be:

 String url = "jdbc:mysql://localhost:3306/"; 
+4
source

Source: https://habr.com/ru/post/1490072/


All Articles