2010-01-12 148 views
0

我找不到爲什麼它顯示錯誤。我先前在Oracle中創建了表名爲book的表。我得到錯誤,沒有合適的驅動程序?

create table books(num number); 

然後我用Java編寫代碼:

Class.forName("oracle.jdbc.driver.OracleDriver"); 
con=DriverManager.getConnection(
    "jdbc:oracle:thin:@CF:1521:orcl", 
    "scott", 
    "tiger"); 
Statement s=con.createStatement(); 
s.execute("INSERT INTO BOOKS VALUES(123)"); 
s.close(); 
con.close(); 

它顯示的錯誤是 「沒有合適的驅動程序」

+0

可以請你用4個空格的ident你的代碼或將其標記,然後按CTRL + K。它會更容易閱讀。根據ojdbc5或ojdbc6庫用於Oracle ojdbc的驅動程序已經被發現@「** ** oracle.jdbc.OracleDriver」(而不是「oracle.jdbc.driver.OracleDriver」): – 2010-01-12 12:06:17

回答

0

您需要設置CLASSPATH指向jar文件。我多年前使用的是「ojdbc14.jar」。找到適合你的那個here

3

看來,Oracle驅動程序(V 1.6)實際上是「被稱爲」:

oracle.jdbc.OracleDriver 
0

如果您要執行的命令行代碼 - 請確保classpath中使用以下$ CLASSPATH環境變量或設置命令行參數-cp [pathTo:] ojdbc14.jar或在當前正在執行的jar的Manifest.mf中設置ClassPath:屬性

使用Eclipse IDE:檢查構建路徑中是否存在jar /或存在構建問題 - 在問題選項卡中檢查它們。

jar文件的版本(可以從Manifest.mf文件中確定)將確認您是否使用了正確的驅動程序包通過執行簡單的jar -tvf來檢查jar是否未損壞。

0

它顯示的錯誤是 「沒有合適的驅動程序」

你顯然沒有System.out.println(e.getMessage())代替e.printStackTrace()的。那麼你確實會得到那麼少的信息。但是,此消息是recognizeable作爲一個SQLException基本能有原因:

  1. 沒有加載驅動程序。
  2. 的(錯誤)JDBC URL沒有爲Driver#acceptsURL()返回true任何加載的驅動程序。

要解決1,你需要確保你有一個

Class.forName("com.example.jdbc.Driver"); 
在你的代碼

之前DriverManager#getConnection()呼叫你做燕子/忽略兩者皆可拋任何ClassNotFoundException通過放置一個空的catch塊或者只是做一個System.out.println()而不是扔它。

要解決2,您需要確保JDBC URL語法遵循的JDBC驅動程序文檔中指定的一個。如果是Oracle,它位於here。這裏有一個報價:

在JDBC中所有的URL都以jdbc開頭:protocol:這是標準的。之後這是特定的驅動程序,沒有兩個驅動程序是相同的。

什麼是URL的形式?

一個URL的一般形式是

jdbc:oracle:<drivertype>:<username/password>@<database> 

<drivertype>

  • OCI
  • kprb之一

<username/password>爲空或形式<username>/<password>

在特定情況下,該URL看起來還行,所以你可能有加載驅動程序或普通無視它拋出的ClassNotFoundException

+0

感謝您詳細解答注意你的JVM。 – 2012-03-16 14:03:17

相關問題