2014-09-24 204 views
0

我試圖使用已經爲我過去,以便從我的JSP項目訪問MySQL工作很大的Java類,運行Tomcat 6,問題是,這條線:的DriverManager.getConnection返回null

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root", "password"); 

給出con的值爲null。

現在,我的問題是 - 什麼會導致「getConnection」方法返回null?

編輯:我現在看到,我也得到臭名昭着的ClassNotFoundException:com.mysql.jdbc.Driver。 我的連接器包含在我的構建路徑中。那麼,爲什麼我會得到這個錯誤?而且,它是否與getConnection返回null有關?

+3

AFAIK沒有任何東西可以導致它返回null。你很可能會吞嚥一個異常。 – 2014-09-24 19:30:04

+0

在構建路徑上有東西並不一定意味着它在運行時類路徑上。 – 2014-09-25 08:00:02

回答

0

您需要先初始化驅動程序,然後才能從DriverManager獲得連接。

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

您的網址不完整。數據庫名稱後應跟着jdbc:mysql://localhost:3306

排查步驟:

  1. 檢查
  2. 檢查該數據庫服務器開啓
+0

數據庫名稱不是強制性的。如果要使用不同數據庫方案的連接,則可以省略名稱並將其放入查詢中:'SELECT * FROM

' – benez2017-08-10 10:06:51

0

根據這篇文章(其中有一個很好的例子)http://www.vogella.com/tutorials/MySQLJava/article.html端口,

如果getConnection引發異常並被您的代碼捕獲,則「con」將爲空。

像:

Connection con = null; 
try{ 
con = DriveManager.getConnection("Not right url"); 

}catch(SQLException sqlE){}; 
System.out.println(con); //it will be null 

你需要做的

connect = DriverManager.getConnection("jdbc:mysql://localhost/feedback?" 
      + "user=sqluser&password=sqluserpw"); 

因此,也許有 「超級用戶身份&密碼=密碼」

此外,如果有ClassNotFoundException的最有可能你需要一個jar文件

DriverManager API: http://docs.oracle.com/javase/7/docs/api/java/sql/DriverManager.html#getConnection(java.lang.String)

+0

(如果回答有問題,請放在爲什麼謝謝你) – Rika 2014-09-24 19:50:19

+0

我沒有downvote,但你的鏈接是不相關的這個問題(如果是你應該至少已經引用或總結了有關部分)和規範中的'DriverManager.getConnection'永遠不會返回'null'。您可以通過查看'DriverManager'代碼來驗證這一點。 – 2014-09-25 07:53:15

+0

@MarkRotteveel在我的回答中,我說如果getConnection沒有正確完成,它將返回null,因爲最有可能的連接錯誤,它看起來像他的字符串是不合適的,因爲參數不正確,但它也可能是他沒有jar文件,它非常像你提供給他的鏈接 – Rika 2014-09-25 13:27:32

0

如果您正在使用JDBC 3工作,那麼你需要加載驅動程序一樣

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

如果您正在使用JDBC 4工作,那麼你不再需要手動加載JdbcDriver要求。

再經過有效connection_urlgetConnection

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/yourDbName", "root", "password"); 

最後確保mysql driver jar在類路徑中。