2013-07-06 10 views
4

DbConnector를 사용하여 DriverManager에서 Connection을 가져 오는 아래 DbQuery.java 클래스를 사용하여 간단한 쿼리를 실행하려고합니다.java.sql.SQLException : 적합한 드라이버가 없습니다.

참고 : 수출 CLASSPATH = $ CLASSPATH에 :

  1. 은 이미 "MySQL의 커넥터 - 자바-5.1.25-bin.jar를"내 클래스 경로를 통해에 포함했다/홈/나 /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. # 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); 
} 

} 
} 
+0

당신이 ** 전체 ** 스택 추적을 게시하시기 바랍니다 수 있지? – BackSlash

+0

더 이상 필요 없다고 생각합니다. 감사. – user749665

답변

7

DbConnector.java의 URL이 잘못되었다는 것 같습니다. 콜론이 없습니다. URL은해야합니다 :

jdbc:mysql://localhost:3306/ 

jdbc:mysql//localhost:3306/ 
4

귀하의 URL이 잘못, 당신은 거기에 콜론을 놓치고있어, 그것이 있어야 :

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

감사합니다. – user749665