【问题标题】:java.sql.SQLException: No suitable driver foundjava.sql.SQLException:找不到合适的驱动程序
【发布时间】:2013-07-04 15:39:58
【问题描述】:

我正在尝试使用下面的 DbQuery.java 类执行简单查询,该类使用 DbConnector 从 DriverManager 获取连接。

注意

  1. 我已经包含了“mysql-connector-java-5.1.25-bin.jar” 类路径通过:导出 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”连接到 mysql 地址簿”,如果重要的话。
  3. 也尝试过使用“-cp”运行 争论无济于事。
  4. 我可以让我的#3 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);
}

}
}

【问题讨论】:

  • 能否请您发布完整堆栈跟踪?
  • 我认为我们不再需要那个了。谢谢。

标签: java jdbc sqlexception ocpjp


【解决方案1】:

DbConnector.java 中的 URL 似乎是错误的。缺少一个冒号。网址必须是:

jdbc:mysql://localhost:3306/

而不是

jdbc:mysql//localhost:3306/

【讨论】:

    【解决方案2】:

    您的网址错误,其中缺少一个冒号,应该是:

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

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2011-08-02
      • 2012-08-28
      • 2015-07-05
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      相关资源
      最近更新 更多