Ошибка при попытке запустить программу, которая создает базу данных Java. Что мне не хватает?
Это пример программы из моей книги, мне нужно запустить ее перед тем, как запустить собственную программу заданий для доступа к базе данных и получения данных. Моя проблема в том, что этот код не работает нормально, он дает мне:
"ERROR: No suitable driver found for jdbc:derby:CityDB;create=true"
at runtime.
Я использую 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());
}
}
}
2 ответа
Сначала загрузите класс, используя:
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Редактировать:
Оказывается, JavaDB недоступен в JDK. См. http://db.apache.org/derby/integrate/plugin_help/derby_app.html.
Чтобы использовать Derby во встроенном режиме, настройте CLASSPATH на включение файлов jar, перечисленных ниже: derby.jar: содержит механизм Derby и драйвер Derby Embedded JDBC
Изменить 2:
Я попытался скомпилировать ваш пример только с derby.jar
на пути к классам, и это не удается. После добавления derbyclient.jar
тоже работает (из JDK7).
Отсутствие подходящего драйвера означает, что вы не добавляете требуемый jar в путь к классу. Если вы используете затмение, следуйте этому
- щелкните правой кнопкой мыши на проекте
- нажмите путь сборки-> настроить путь сборки
- затем нажмите вкладку библиотеки
- Затем нажмите добавить внешний jar и укажите путь к файлу jar.
- Перезапустите проект
Следуйте инструкциям для IntelliJ IDEA
- Нажмите Файл
- Нажмите Структура проекта (сочетание клавиш Ctrl + Shift + Alt + S)
- Затем нажмите модуль, затем на зависимости
- Затем нажмите на Добавить-> Библиотека проекта