2013-07-02 89 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分,不要再进一步。 –

相关问题