2012-04-13 2 views
1

Добрый день!Java DB: нет подходящего драйвера найдено

Я знаю, что было много сообщений для такого рода вопросов, но я просмотрел некоторые из них и не смог найти ответ для своей проблемы, так как я использую встроенное Derby.

Я получаю эту ошибку:

##THIS IS GENERATED BY THE METHOD printSQLException shown at the code below 
----- SQLException ----- 
SQL State: 08001 
Error Code: 0 
Message: No suitable driver found for jdbc:derby://localhost:1527/recordbookDB 

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at recordbook.RecordBook.checkHasAccount(RecordBook.java:71) 
    at recordbook.Login.<init>(Login.java:31) 
    at recordbook.Login$1.run(Login.java:168) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:647) 
    at java.awt.EventQueue.access$000(EventQueue.java:96) 
    at java.awt.EventQueue$1.run(EventQueue.java:608) 
    at java.awt.EventQueue$1.run(EventQueue.java:606) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:617) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:138) 
BUILD STOPPED (total time: 6 minutes 16 seconds) 

Проблема заключается в подключении к части базы данных. Это часть кода (и методы), которые необходимы, чтобы увидеть проблему:.

public class RecordBook 
{ 
    private String framework = "embedded"; 
    private String driver = "org.apache.derby.jdbc.EmbeddedDriver"; 
    private String protocol = "jdbc:derby:"; 
    private Connection conn; 

    //this is where everything happens 
    public RecordBook() 
    { 
     //Loading the Driver 
     loadDriver(); 

     //Connecting to the database 
     conn = null; 
     try 
     { 
      Properties props = new Properties(); 
      props.put("user","root"); 
      props.put("password","root"); 
      String dbName = "//localhost:1527/recordbookDB"; 
      conn = DriverManager.getConnection(protocol + dbName, props); //error is here 

     } 
     catch (SQLException sqle) 
     { 
      printSQLException(sqle); 
     } 
    } 

    //BELOW ARE THE METHODS USED ABOVE  
    /** 
    * CODE FROM http://db.apache.org/derby/papers/DerbyTut/embedded_intro.html 
    */ 
    private void loadDriver() 
    { 
     try 
     { 
      Class.forName(driver).newInstance(); 
      System.out.println("Loaded the appropriate driver"); 
     } 
     catch (ClassNotFoundException cnfe) 
     { 
      System.err.println("\nUnable to load the JDBC driver " + driver); 
      System.err.println("Please check your CLASSPATH."); 
      cnfe.printStackTrace(System.err); 
     } 
     catch (InstantiationException ie) 
     { 
      System.err.println("\nUnable to instantiate the JDBC driver " + driver); 
      ie.printStackTrace(System.err); 
     } 
     catch (IllegalAccessException iae) 
     { 
      System.err.println("\nNot allowed to access the JDBC driver " + driver); 
      iae.printStackTrace(System.err); 
     } 
    } 

    /** 
    * CODE FROM http://db.apache.org/derby/papers/DerbyTut/embedded_intro.html 
    * 
    * @param e the SQLException from which to print details. 
    */ 
    public static void printSQLException(SQLException e) 
    { 
     // Unwraps the entire exception chain to unveil the real cause of the exception. 
     while (e != null) 
     { 
      System.err.println("\n----- SQLException -----"); 
      System.err.println(" SQL State: " + e.getSQLState()); 
      System.err.println(" Error Code: " + e.getErrorCode()); 
      System.err.println(" Message: " + e.getMessage()); 
      // for stack traces, refer to derby.log or uncomment this: 
      //e.printStackTrace(System.err); 
      e = e.getNextException(); 
     } 
    } 
+0

Пожалуйста, отредактируйте свое сообщение, чтобы включить трассировку стека COMPLETE, и укажите, какой оператор в вашем коде выдал реальное исключение. Также укажите источник этого утверждения. –

+0

@JimGarrison Хорошо. Я только что отредактировал его. Спасибо –

+0

Где источник для 'recordbook.RecordBook.checkHasAccount()'? –

ответ

3

Нет подходящий драйвер», как правило, не означает, что URL JDBC вы поставляется для подключения имеет неправильный синтаксис

Подробнее check out the documentation

Также убедитесь, что у вас есть derby.jar в вашем пути к классам. Я хотел бы предложить, чтобы разместить derby.jar на физическое местоположение в /WEB-INF/lib директории вашего project.Then затмения будет заботиться для отдыха.

+1

Спасибо. Я нашел правильный URL. Проблема теперь в CLASSPATH. В нем написано: 'Не удалось загрузить драйвер JDBC. Org.apache.jdbc.EmbeddedDriver Проверьте свой CLASSPATH.' –

+0

Оформить заказ отредактированный ответ –

+0

Спасибо Hardik! Я, наконец, получил базу данных. :) –

Смежные вопросы