Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.sql.SQLException: No suitable driver found

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

note:

  1. I have already included "mysql-connector-java-5.1.25-bin.jar" on my classpath via: export CLASSPATH=$CLASSPATH:/home/me/ocpjp/chapter-10/mysql-connector-java-5.1.25/mysql-connector-java-5.1.25-bin.jar
  2. I am able to connect to mysql with "mysql -uroot -ptcial addressBook", if it matters.
  3. have also tried running with '-cp' argument with no avail.
  4. I am able to get my #3 DbConnect.java class to say "Database connection established".
  5. Also #4 DbQueryWorking.java has no issues and provides expected output .

Can you please help me understand what is the issue here ?

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

}
}
like image 538
rohtakdev Avatar asked Jul 06 '13 21:07

rohtakdev


People also ask

How do you fix Java SQL SQLException no suitable driver found?

This error occurs if JDBC is not able to find a suitable driver for the URL format passed to the getConnection() method e.g. "jdbc:mysql://" in our case. In order to solve this error, you need the MySQL JDBC driver like mysql-connector-java-5.1. 36. jar in your classpath.

How do I fix no suitable driver found for JDBC MySQL localhost 3306?

How to solve "No suitable driver found for jdbc:mysql://localhost:3306/mysql" You can solve this problem first by adding MySQL connector JAR, which includes JDBC driver for MySQL into classpath e.g. mysql-connector-java-5.1. 18-bin. jar.

What is Java SQL SQLException?

An exception that provides information on a database access error or other errors. Each SQLException provides several kinds of information: a string describing the error. This is used as the Java Exception message, available via the method getMesasge .


2 Answers

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

jdbc:mysql://localhost:3306/

and not

jdbc:mysql//localhost:3306/
like image 141
M. Abbas Avatar answered Sep 27 '22 22:09

M. Abbas


your URL is wrong, you're missing a colon in it, it should be:

String url = "jdbc:mysql://localhost:3306/";
like image 42
morgano Avatar answered Sep 27 '22 21:09

morgano