2015-09-12 107 views
-1

我有這樣的代碼通過JAVA如何Java程序的Oracle 11g連接

public class Mian { 

    public static void main(String[] args) { 

     try { 
      Class.forName("oracle.jdbc.Driver.OracleDriver"); 
      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:aaa","aaa","aaa"); 
      Statement st = conn.createStatement(); 
     } catch (Exception e) { 
      System.out.println("error : " + e); 
     } 
    } 
} 

我不能和我的數據庫,由Oracle創建11g的

Database name = aaa ,,, user name = aaa ,,, password = aaa 

連接和我導入驅動程序在我項目ojdbc6.jar

爲什麼我顯示這個錯誤與我運行該程序?

error : java.lang.ClassNotFoundException: oracle.jdbc.Driver.OracleDriver

+0

嘗試使用'oracle.jdbc.driver.OracleDriver'(小寫字母d)。而且,如果我沒有記錯的話,驅動程序被移到'oracle.jdbc.OracleDriver'(第一個被棄用)。 – Tunaki

+0

您是否嘗試過搜索「ClassNotFoundException」的含義? –

+0

我的編輯後,它顯示新的錯誤「java.sql.SQLException:監聽器拒絕連接,並出現以下錯誤: ORA-12505,TNS:監聽器當前不知道連接描述符中給出的SID」,這段代碼是什麼意思? – Mordyit

回答

1

每當你看到ClassNotFoundException的,你有兩個問題之一:

  1. 您使用了錯誤的名稱一類
  2. 東西從你的classpath中失蹤。

在這種情況下,您需要使用「oracle.jdbc.driver.OracleDriver」,如前所述。

您還需要一個Oracle名爲「ojdbc#number#.jar」的jar文件,其中#number#是您希望代碼執行的最低Java版本。 EG,「ojdbc6.jar」僅適用於Java 6或更新的版本。

如果你的代碼實際編譯,那麼你的編譯類路徑中有這個jar。執行代碼時,您還需要在運行時類路徑中使用它。

你確定,你有一個在本地主機上運行的Oracle SID或服務名稱爲「aaa」的副本?這似乎極不可能。如果您使用的是Oracle Exppress,那麼它是「XE」。這意味着您的URL將爲:

jdbc:oracle:thin:@localhost:1521:XE","aaa","aaa"