2013-07-02 90 views
1

我從Oracle的網站上看到了這個例子,我無法實現它。它不斷顯示錯誤。我已經將mysql 5.1驅動程序jar添加到我的項目庫文件夾 以及我的構建路徑。我如何修復我的代碼?沒有找到適用於jdbc的驅動程序?

鏈接 - http://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html

錯誤 -

java.sql.SQLException: No suitable driver found for jdbc:JavaEE://localHost:3306/ 
    at java.sql.DriverManager.getConnection(DriverManager.java:602) 
    at java.sql.DriverManager.getConnection(DriverManager.java:154) 
    at com.beans.us.dao.Data.getConnection(Data.java:25) 
    at com.beans.us.dao.Data.main(Data.java:43) 
Cannot connect to database 

碼 -

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.util.Properties; 

public class Data { 

    public static Connection getConnection() { 

     Connection conn = null; 
     Properties connectionProps = new Properties(); 
     String userName = "root"; 
     String password = "root"; 
     String dbms = "JavaEE"; 
     String serverName = "localHost"; 
     String portNumber = "3306"; 

     connectionProps.put("user", userName); 
     connectionProps.put("password", password); 

     try { 

      conn = DriverManager.getConnection("jdbc:" + dbms + "://" 
        + serverName + ":" + portNumber + "/", connectionProps); 
     } catch (SQLException sQLException) { 
      sQLException.printStackTrace(); 
     } 

     if (conn != null) { 
      System.out.println("Connected to database"); 
     } else { 
      System.out.println("Cannot connect to database"); 
     } 

     return conn; 
    } 

    public static void main(String[] args) { 

     getConnection(); 

    } 

} 
+0

什麼樣的JavaEE的數據庫?我還沒有看到,與java朋友的默認數據庫是derby – 2013-07-02 18:28:18

回答

3

連接字符串是:

"jdbc:JavaEE://..." 

但與MySQL應該

"jdbc:mysql://..." 

而且,你忘了加載驅動程序:

Class.forName("com.mysql.jdbc.Driver"); 

它需要調用

conn = DriverManager.getConnection(...); 
+0

Class.forName(「com.mysql.jdbc.Driver」);在這裏不需要。你的答案獲勝。我認爲dbms意味着我的db。愚蠢的錯誤。 –

0

看來你忘了加載驅動程序。

Class.forName("com.mysql.jdbc.Driver"); 

Class.forName()導致ClassLoader將該類加載到內存中。 JDBC驅動程序類包含一個靜態初始化程序塊,用於將驅動程序註冊爲DriverManager供以後參考。

沒有注意到這個早些時候,連接字符串應該是"jdbc:mysql://localhost:3306/dbname"

+3

版本4 jdbc驅動程序不再需要。 – jtahlborn

+0

@jtahlborn - 是的。我在我的代碼中有這一行,但仍然失敗。所以我在SO上發佈代碼之前刪除了這一行。降低了答案。我建議將答案降低到0分,不要再進一步。 –

相關問題