2010-09-28 3 views
21

Я получаю эту ошибку в Netbeans:SQLException: Нет подходящий драйвер найден для JDBC: дерби: // локальный: 1527

java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/ 

Как это вызвало и как я могу решить эту проблему?

+0

Возможный дубликат [The infamous java.sql.SQLException: не найдено подходящего драйвера] (http: // stackoverflow.com/questions/1911253/the-infamous-java-sql-sqlexception-no-fit-driver-found) – BalusC

ответ

3

JDBC DriverManager не удалось найти подходящего Driver для данного URL-соединения. Перед подключением БД драйвер JDBC вообще не загружается, или URL-адрес подключения неверен. Поскольку URL-адрес подключения выглядит нормально, я уверен, что драйвер вообще не загружен. Перед подключением БД вам необходимо загрузить драйвер во время запуска приложения. Для Apache Derby имя класса драйвера: org.apache.derby.jdbc.ClientDriver. Итак:

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

На самом деле я думаю, что они используют ClientDriver, а не EmbeddedDriver, на основе URL-адреса соединения. Так что это должен быть org.apache.derby.jdbc.ClientDriver. –

+0

Исправлено, спасибо :) – BalusC

+0

Переключение на derbyclient.jar вместо derby.jar для моего сетевого экземпляра дерби было моей проблемой. – Blaskovicz

21

java.sql.SQLException: Нет подходящий драйвер найден для JDBC: дерби: // локальный: 1527/

Это исключение имеет две причины:

  • Драйвер не загружен.
  • URL-адрес JDBC неверен.

В вашем случае, я бы ожидать, чтобы увидеть название базы данных в конце строки подключения. Например (используйте create=true, если вы хотите, чтобы база данных будет создана, если она не существует):

jdbc:derby://localhost:1527/dbname;create=true 

Базы данных по умолчанию создаются в каталоге, где Network Server был запущен. Но вы также можете указать абсолютный путь к папке базы данных:

jdbc:derby://localhost:1527//home/pascal/derbyDBs/dbname;create=true 

И только в случае, убедитесь, что derbyclient.jar находится на пути к классам и что вы загружаете соответствующий драйвер org.apache.derby.jdbc.ClientDriver при работе в сервере Режим.

0

Также возможно, что в persistence.xml, EmbeddedDriver использовался, когда URL-адрес jdbc указывал на сервер Derby. В этом случае просто измените URL-адрес на указатель пути к базе данных.

2

Если вы используете встроенное Derby, вам нужно Derby.jar в вашем пути к классам.

10

Для меня

DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver()); 

помог. Таким образом, DriveManager знает дерби EmbeddedDriver. Возможно, выделение нового EmbeddedDriver является тяжелым, но с другой стороны, Class.forName нуждается в try/catch/doSomethingIntelligentWithException, которое мне не очень нравится.

+1

Он также работал для меня. – srk

0

Если база данных создана, и вы запустили соединение с ней, вам необходимо добавить флешку драйвера. из окна проекта щелкните правой кнопкой мыши папку библиотек, перейдите в: programfiles \ sun \ javadb \ lib \ derbyclient.jar. загрузите файл, и вы сможете его запустить.

все лучшее

3

У меня была такая же проблема, когда я пишу приложение Java на Netbeans.Вот решение:

  1. Найдите свой проект на вкладке выбора проектов

  2. Щелкните правой кнопкой мыши "Библиотеки"

  3. Нажмите кнопку "Добавить архив/папку ..."

  4. Выбрать "derbyclient.jar"

  5. Нажмите «Открыть», после чего вы увидите «derbyclient.jar» под вашими «Библиотеками»

  6. Убедитесь, что ваш URL, имя пользователя, передать слово правильно, и запустить свой код :)

14

Примечание: Вы можете загрузить его с here.

Если вы не можете найти его, то

  1. Найдите свой проект на вкладке выбора проектов

  2. правой кнопкой мыши "Libraries"

  3. Нажмите «Добавить JAR/папку .. . "

  4. Выберите" derbyclient.jar "

  5. Нажмите кнопку «Открыть», то вы увидите «derbyclient.jar» под вашу «Библиотекой»

Убедитесь, что URL, имя пользователя, пароль правильное, и запустить свой код :)

2

На этот вопрос отвечает, но для иллюстрации показана командная строка. Это работало для меня, когда я пытался как можно более простой тест подключиться к сетевому дерби. .

  • Драйвер загружен в приложение с: Class.forName ("org.apache.derby.jdbc.ClientDriver") newInstance();

  • URL-соединение было: "JDBC: котелок: // локальный: 1527/MyDB, создать = истина"

  • Я побежал мое приложение с помощью: Java -classpath derbyclient.jar :. myAppClass

0

Я пробовал все, что упоминалось в этой теме, и только .registerDriver() работал для меня. Вот как выглядит моя часть кода:

DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver()); 
connection = DriverManager.getConnection(url, user, pass); 

Обратите внимание, что проблема не в встроенном Derby.

2

Я решил эту проблему путем добавления библиотеки к пульту библиотеки ниже моего проекта:

  • правой кнопкой мыши, а затем добавить библиотеку
  • добавить JAVA DB ВОДИТЕЛЯ.

Мой проект работает!

0

Вы также можете получить ту же ошибку, если сервер Java DB не был запущен.

1

Я столкнулся с той же проблемой. Я не получал вызов DriverManager.registerDriver(), прежде чем получать соединение, используя URL-адрес соединения и учетные данные пользователя.

Она была исправлена ​​на Linux, как показано ниже:

DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver()); 
connection = DriverManager.getConnection("jdbc:derby://localhost:1527//tmp/Test/DB_Name", user, pass); 

Для Windows:

DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver()); 
connection = DriverManager.getConnection("jdbc:derby://localhost:1527/C:/Users/Test/DB_Name", user, pass); 
0

Вы можете отсутствовать, чтобы запустить сервер Derby. После запуска сервера котелок, он начинает слушать по умолчанию порт 1527.

Начало сценария находится ниже:

Windows:

<DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat 

Linux:

<DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer 
0

Эта ошибка возникает, когда синтаксис строки подключения недопустим.

Вы можете использовать строку соединения, как

'jdbc:derby:MyDbTest;create=true' 

или

вы можете использовать следующую команду в командной строке, команда ниже создает новую базу данных под названием MyDbTest успешно:

connect 'jdbc:derby:MyDbTest;create=true'; 
0

Я только что столкнулся с этой проблемой, попробовал все вышеперечисленные предложения, но все еще не смог. Без повторения того, что было предложено выше, вот то, что я (вас) может отсутствовать: В случае, если вы используете Maven, скорее всего, вы будете утверждать, что зависимости, то есть:

<groupId>org.apache.derby</groupId> 
<artifactId>derbyclient</artifactId> 
<version>10.10.1.1</version> 

Пожалуйста, будьте осторожны с версией , Он должен быть совместим с экземпляром сервера, который вы используете.

Я решил свой случай, отказавшись от каких-либо зависимостей maven и вручную добавив внешнюю банку из «% JAVA_HOME% \ db \ lib», того же источника моего работающего сервера. В этом случае я тестирую с помощью Local.

Итак, если вы тестируете экземпляр удаленного сервера, найдите derbyclient.jar, который поставляется с пакетом серверов.

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