Question

This is a sample program from my book, I need to run this before I run my own assignment program to access the database and retrieve data. My problem is, this code doesn't run normally, it gives me:

"ERROR: No suitable driver found for jdbc:derby:CityDB;create=true" 

at runtime.

I am using IntelliJ 13 - Community Edition.

import java.sql.*;

/**
This program creates the CityDB database.                                    *
*/

public class CreateCityDB {

public static void main(String[] args) throws Exception {
    String sql;
    final String DB_URL = "jdbc:derby:CityDB;create=true";

    try {
        // Create a connection to the database.
        Connection conn = DriverManager.getConnection(DB_URL);

        // Create a Statement object.
        Statement stmt = conn.createStatement();

        // Create the Dvd table.
        System.out.println("Creating the City table...");
        stmt.execute("CREATE TABLE City ("    +
                    "CityName CHAR(25) NOT NULL PRIMARY KEY, "   +
                    "Population DOUBLE)");

        // Add some rows to the new table.
        sql = "INSERT INTO City VALUES" +
                "('Beijing', 12500000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Buenos Aires', 13170000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Cairo', 14450000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Calcutta', 15100000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Delhi', 18680000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Jakarta', 18900000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Karachi', 11800000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Lagos', 13488000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('London', 12875000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Los Angeles', 15250000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Manila', 16300000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Mexico City', 20450000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Moscow', 15000000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Mumbai', 19200000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('New York City', 19750000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Osaka', 17350000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Sao Paulo', 18850000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Seoul', 20550000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Shanghai', 16650000)";
        stmt.executeUpdate(sql);

        sql = "INSERT INTO City VALUES" +
        "('Tokyo', 32450000)";
        stmt.executeUpdate(sql);

        // Close Resources
        stmt.close();
        conn.close();
        System.out.println("Done");
    }
    catch(Exception ex) {
        System.out.println("ERROR: " + ex.getMessage());
    }

}

}
Was it helpful?

Solution

Load the class first using:

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

Edit:

Turns out JavaDB is not readily available in the JDK. See http://db.apache.org/derby/integrate/plugin_help/derby_app.html#Changing+the+application+to+use+the+Derby+Embedded+Driver.

To use Derby in its embedded mode set your CLASSPATH to include the jar files listed below: derby.jar: contains the Derby engine and the Derby Embedded JDBC driver

Edit 2:

I've tried compiling your example with only derby.jar on the classpath and it fails. After adding derbyclient.jar too it works (from JDK7).

OTHER TIPS

No suitable driver means you are not adding the required jar in your class path. If you are using eclipse then follow this

  • right click on project
  • click build path->configure build path
  • then click libraries tab
  • Then click add external jar and give the path of the jar file.
  • Re run the project

Follow the steps for IntelliJ IDEA

  1. Click File
  2. Click Project Structure(short cut ctrl + shift + alt + s)
  3. Then click module then on dependencies
  4. Then click on add->project library
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top