title: Java DB: No Suitable Driver Found
body: <p>Good day!</p>
  
  <p>I know there has been lots of posts for this kind of question, but I've looked at some of them and could not find the answer for my problem since I am using an Embedded Derby.</p>
  
  <p>I am getting this error:</p>
  
  <pre><code>##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.&lt;init&gt;(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)
  </code></pre>
  
  <p>The problem is in the connecting to the database part.
  This is the part of the code (and the methods) needed to see the problem:</p>
  
  <pre><code>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();
          }
      }
  </code></pre>