Java.sql.SQLException:找不到合适的驱动程序

6
我正在尝试使用下面的DbQuery.java类执行简单查询,该类使用DbConnector从DriverManager获取连接。
注意:
1.我已通过以下方式将“mysql-connector-java-5.1.25-bin.jar”包含在我的类路径中:export CLASSPATH=$CLASSPATH:/home/me/ocpjp/chapter-10/mysql-connector-java-5.1.25/mysql-connector-java-5.1.25-bin.jar 2.如果有影响,我能够通过“mysql -uroot -ptcial addressBook”连接到mysql。
3.我还尝试了使用“-cp”参数运行,但无济于事。
4.我可以让我的第三个DbConnect.java类说“数据库连接已建立”。
5.而且#4 DbQueryWorking.java没有问题并提供预期的输出。
请帮助我理解这里的问题是什么?
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);
}

}
}

请问您能否提供完整的堆栈跟踪信息? - BackSlash
我认为我们不再需要那个了。谢谢。 - rohtakdev
2个回答

7

看起来在 DbConnector.java 中,URL 是错误的。缺少了一个冒号。正确的 URL 应该是:

jdbc:mysql://localhost:3306/

而不是

jdbc:mysql//localhost:3306/

4

您的URL链接有误,缺少一个冒号,正确的链接应该是:

String url = "jdbc:mysql://localhost:3306/";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接