2011-04-25 64 views
0

我試圖通過JDBC連接到Oracle數據庫。使用下面的代碼:DriverManager.getConnection()返回null,而不是連接對象

Connection c = null; 
try { 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    c = DriverManager.getConnection(connURL, userID, password); 
} catch (SQLException se) { 
    System.out.println(se.getMessage()); 
} catch (Exception e) { 
    System.out.println(e.getMessage()); 
} 

出於某種原因,沒有異常被拋出,但c保持爲空 - 這是什麼意思?

更新:

原來我們得到一個異常 - Class not found: "oracle.jdbc.driver.OracleDriver" - 我們不得不在classpath外的ODBC類。

+3

你確定沒有拋出異常嗎?如果引發異常會怎麼樣,但是getMessage()會返回空字符串? – axtavt 2011-04-25 11:11:08

+2

將ojdbc.jar添加到類路徑 – GustyWind 2011-04-25 11:19:03

+0

將獲取連接的邏輯移到某個方法並拋出異常。 – 2011-04-25 22:09:03

回答

1

如果您以不同的方式處理您的例外情況,這將更容易發現。只是打印異常消息並繼續前進很難做正確的事情。當數據庫連接是null時,你能做什麼?如果拋出一個異常表明連接不可用,那麼無論是哪個例程試圖連接數據庫,都可以提醒用戶潛在的系統中斷,記錄錯誤並向系統管理員發送電子郵件(例如)。正如你所發現的那樣,僅僅返回null就不那麼明顯。

+0

確實。即使你要返回null,最好在'try'塊中聲明'c'(或許使用一個更好的名字),並明確地返回catch塊。 – 2011-04-25 14:17:08

相關問題