Я получаю эту ошибку в Netbeans:
java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/
Как это вызвано и как я могу его решить?
Я получаю эту ошибку в Netbeans:
java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/
Как это вызвано и как я могу его решить?
java.sql.SQLException: Не найдено подходящего драйвера для jdbc: derby://localhost: 1527/
Это исключение имеет две причины:
В вашем случае я ожидаю увидеть имя базы данных в конце строки подключения. Например (используйте create=true
, если вы хотите создать базу данных, если она не существует):
jdbc:derby://localhost:1527/dbname;create=true
Базы данных создаются по умолчанию в каталоге, в котором запущен Сетевой сервер. Но вы также можете указать абсолютный путь к местоположению базы данных:
jdbc:derby://localhost:1527//home/pascal/derbyDBs/dbname;create=true
И на всякий случай, убедитесь, что derbyclient.jar находится в пути к классу и что вы загружаете соответствующий драйвер org.apache.derby.jdbc.ClientDriver
при работе в режиме сервера.
Примечание: вы можете загрузить его из здесь.
Если вы не можете найти его,
Найдите свой проект на вкладке выбора проектов
Щелкните правой кнопкой мыши "Библиотеки"
Нажмите "Добавить JAR/Папка..."
Выберите "derbyclient.jar"
Нажмите "Открыть", затем в "Библиотеках" вы увидите "derbyclient.jar"
Убедитесь, что ваш URL, имя пользователя, пароль верны и запустите свой код:)
Для меня
DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver());
помог. Таким образом, DriveManager знает дерби EmbeddedDriver. Возможно, выделение нового EmbeddedDriver является тяжелым, но с другой стороны, Class.forName нуждается в try/catch/doSomethingIntelligentWithException, которое мне не очень нравится.
JDBC DriverManager
не может найти подходящий Driver
для данного URL-адреса подключения. Перед подключением БД драйвер JDBC вообще не загружается, или URL-адрес подключения неверен. Поскольку URL-адрес подключения выглядит нормально, я уверен, что драйвер вообще не загружен. Перед подключением базы данных необходимо загрузить драйвер во время запуска приложения. Для Apache Derby имя класса драйвера org.apache.derby.jdbc.ClientDriver
. Итак:
Class.forName("org.apache.derby.jdbc.ClientDriver");
У меня была та же проблема, когда я писал приложение Java на Netbeans. Вот решение:
Найдите свой проект на вкладке выбора проектов
Щелкните правой кнопкой мыши "Библиотеки"
Нажмите "Добавить JAR/Папка..."
Выберите "derbyclient.jar"
Нажмите "Открыть", затем в "Библиотеках" вы увидите "derbyclient.jar"
Убедитесь, что ваш URL, имя пользователя, слово передано правильно и запустите свой код:)
Я решил это, добавив библиотеку в консоль библиотеки ниже моего проекта:
Мой проект работает!
Если вы используете встроенное Derby, вам нужно Derby.jar в вашем пути к классам.
Ответ дан, но для иллюстрации показана командная строка. Это сработало для меня, когда я пытался как можно более простой тест подключиться к сетевому дерби.
Драйвер, загруженный в приложение: Class.forName( "org.apache.derby.jdbc.ClientDriver" ). newInstance();
URL-адрес соединения: "jdbc: derby://localhost: 1527/myDB; create = true"
Я запускал свое приложение, используя: java -classpath derbyclient.jar:. myAppClass
Я столкнулся с той же проблемой. Мне не удалось вызвать службу 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);
Также возможно, что в файле persistence.xml использовался EmbeddedDriver, в то время как URL-адрес jdbc указывал на сервер Derby. В этом случае просто измените url на указание пути к базе данных.
Я попробовал все, что упоминалось в этой теме, и только .registerDriver() работал у меня. Вот как выглядит моя часть кода:
DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection(url, user, pass);
Обратите внимание, что проблема не во встроенном Derby.
Вы также можете получить ту же ошибку, если сервер Java DB не был запущен.
Возможно, вам не удастся запустить сервер Derby. Как только сервер дерби запускается, он начинает прослушивать порт по умолчанию 1527.
Запуск script расположен ниже:
Окна:
<DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat
Linux:
<DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer
Эта ошибка возникает, когда синтаксис строки подключения недействителен.
Вы можете использовать строку подключения как
'jdbc:derby:MyDbTest;create=true'
или
вы можете использовать следующую команду в командной строке, приведенная ниже команда создает новую базу данных с именем MyDbTest
успешно:
connect 'jdbc:derby:MyDbTest;create=true';
Я только что столкнулся с этой проблемой, попробовал все вышеперечисленные предложения, но все еще не смог. Без повторения того, что было предложено выше, вот что я (вы) может отсутствовать: Если вы используете maven, вероятно, вы укажете зависимости i.e:
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.10.1.1</version>
Будьте осторожны с версией. Он должен быть совместим с экземпляром сервера, который вы используете.
Я решил свой случай, отказавшись от каких-либо зависимостей maven и вручную добавив внешнюю банку из "% JAVA_HOME%\db\lib", того же источника моего работающего сервера. В этом случае я тестирую, используя мой Local.
Итак, если вы тестируете экземпляр удаленного сервера, найдите файл derbyclient.jar, который поставляется с пакетом серверов.
если база данных создана, и вы запустили соединение с ней, тогда вам нужно добавить банку драйвера. из окна проекта щелкните правой кнопкой мыши папку библиотек, перейдите в: programfiles\sun\javadb\lib\derbyclient.jar. загрузите файл, и вы сможете его запустить.
все лучшее