2013-12-17 111 views
0

我是JAVA和SQL的新手。JAVA SQL - 找不到適用於jdbc的驅動程序:derby

在一次練習中,我需要從NetBeans中的示例SQL表中讀取數據。

在「services」中,我啓動了JAVA DB服務器。都好。下面的消息出現了:

Mon Dec 16 21:40:36 EST 2013 : Security manager installed using the Basic server security policy. 
Mon Dec 16 21:40:37 EST 2013 : Apache Derby Network Server - 10.8.3.0 - (1405108) started and ready to accept connections on port 1527 

但是當我運行這個程序(如下圖),就會出現以下錯誤:

SQL Error: java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/sample 0 08001 

這裏是代碼..我怎麼能確保正確的驅動程序被發現?

import java.sql.*; 

public class TableReporter { 

    public static void main(String[] args) { 
     String data = "jdbc:derby://localhost:1527/sample"; 
     try (
      Connection conn = DriverManager.getConnection(
      data, "app", "APP"); 
      Statement st = conn.createStatement()) { 

      Class.forName("org.apache.derby.jdbc.ClientDriver"); 

      ResultSet rec =st.executeQuery(
        "select * " + 
        "from SYS.SYSTABLES" + 
        "order by TABLENAME"); 
      while(rec.next()){ 
       System.out.println("TABLEID:\t" + rec.getString(1)); 
       System.out.println("TABLENAME:\t" + rec.getString(2)); 
       System.out.println("TABLETYPE:\t" + rec.getString(3)); 
       System.out.println("SCHEMAID:\t" + rec.getString(4)); 
       System.out.println(); 
      } 
     st.close(); 
     } catch (SQLException s){ 
      System.out.println("SQL Error: " + s.toString() + " " 
        + s.getErrorCode() + " " + s.getSQLState()); 
     } catch (Exception e) { 
      System.out.println("Error: " + e.toString() 
        +e.getMessage()); 
       } 
    } 
} 
+0

退房相關鏈接在頁面的右手邊有 – Reimeus

+0

Java是一個詞,不是一個縮寫,它應該寫成「Java」,而不是全部大寫 –

回答

2

問題出在jar文件上。

Class.forName("org.apache.derby.jdbc.ClientDriver"); 

檢查,

  1. 無論是安裝還是不行。
  2. 如果安裝了,是否需要更新.bashrc文件。
  3. 或者,您是否在netBeans IDE中導入了.jar文件。

如果一切都不起作用,只需編寫一個簡單的JDBC程序使用notpad連接到數據庫&運行它,檢查你的機器有什麼問題。

+0

我必須在「Projects」中添加JavaDB庫..右鍵單擊「Librabries」..但現在當我運行它收到有關用戶標識和密碼的錯誤消息:SQL錯誤:java.sql。SQLNonTransientConnectionException:發生連接認證失敗。原因:用戶ID或密碼無效。 40000 08004 – Sylvain

+0

看看這個鏈接,可能會幫助你,http://stackoverflow.com/questions/6172930/sqlnontransientconnectionexception-no-current-connection-in-my-application-whi – Aditya

2

您是否需要在嘗試創建連接之前加載驅動程序?

移動這一說法

Class.forName("org.apache.derby.jdbc.ClientDriver"); 

是在try塊中的第一個。

0

Try this changes in your code

Class.forName("org.apache.derby.jdbc.ClientDriver"); 
Connection conn = DriverManager.getConnection(
     data, "app", "APP"); 
     Statement st = conn.createStatement()) { 
0

你需要加載驅動程序德比的罐子。

Class.forName(「org.apache.derby.jdbc.ClientDriver」);

+0

它在代碼中有... – Sylvain

0

我有同樣的問題,雖然我提供

Class.forName("org.apache.derby.jdbc.ClientDriver"); 

但我發現我的屬性文件,我加載數據庫的用戶名和密碼從沒有在正確的格式。 它應該是這樣的:

dburi=jdbc:derby://localhost:1527/dbname 
user=username 
pass=xxxx 

,並在代碼:

CachedRowSetImpl crs = new CachedRowSetImpl(); 
Properties pr = Properties(); 
crs.setUrl(pr.getProperty("dburi")); 
crs.setUsername(pr.getProperty("user")); 
crs.setPassword(pr.getProperty("pass")); 
相關問題