2015-09-21 4 views
1

Мне было предложено подключить базу данных Apache Derby к нашим существующим инструментам для интеллектуального анализа данных MATLAB. Я бег MATLAB R2014a (без базы данных панели инструментов)Подключение MATLAB к базе данных Apache Derby через JDBC

После некоторых исследований и проб и ошибок, вот что я сделал:

пошел http://www.java2s.com/Code/Jar/d/Downloadderbyclientjar.htm и загрузить derbyclient.jar и сохранил его, и распаковал его в общей папку ,

отредактировал текстовый файл C: \ Users \ tyler.davis \ AppData \ Roaming \ MathWorks \ MATLAB \ R2014a \ javaclasspath.txt и добавил полный путь к derbyclient.jar, сохранил его, перезапустил MATLAB.

В командной строке MATLAB

javaclasspath 

показывает "S: \ Shared ... \ derbyclientjar \ derbyclient.jar \ derbyclient.jar" в конце статического списка путей. Все идет нормально.

Далее, попробуйте

driverClassName = 'org.apache.derby.jdbc.ClientDriver'; 
java.lang.Class.forName(driverClassName); 

отчеты об ошибке:

Java exception occurred: 
java.lang.ClassNotFoundException: org/apache/derby/jdbc/ClientDriver 

at java.lang.Class.forName0(Native Method) 

at java.lang.Class.forName(Unknown Source) 

Пробовал альтернативу:

classLoader = com.mathworks.jmi.ClassLoaderManager.getClassLoaderManager; 
driverClass = classLoader.loadClass(driverClassName); 

Это, казалось, работать, созданные объекты «driverClass, тип 1x1 java.lang .Class "и" classLoader, значение 1x1 com.mathworks.jmi.ClassLoaderManager "

Тогда я попытался

DriverManager.registerDriver(driverClass.newInstance); 

который отчеты об ошибках

Undefined variable "DriverManager" or class "DriverManager.registerDriver". 

и если я пытаюсь создать базу данных с помощью

cxnStr = 'jdbc:derby:sampleDB:create=true'; 
cxn = java.sql.DriverManager.getConnection(cxnStr); 

Я получаю

Java exception occurred: 
java.sql.SQLException: No suitable driver found for jdbc:derby:sampleDB:create=true 

at java.sql.DriverManager.getConnection(Unknown Source) 

at java.sql.DriverManager.getConnection(Unknown Source) 

Я действительно не знаю, что я здесь делаю; просто копируя код другого пользователя из Интернета. Любые предложения о том, что попробовать дальше?

ответ

0

Поскольку вы только знакомитесь с Дерби, я могу рекомендовать вам занять час или два, и запустить через Derby учебник: http://db.apache.org/derby/docs/10.11/getstart/cgstutorialintro.html

Кроме того, я могу рекомендовать, что вы получите в привычку загрузки Derby с сайта Apache, а не на других интернет-сайтах? Копии Derby на других сайтах, вероятно, прекрасны, но, кажется, наиболее надежно и безопасно получить Derby с веб-сайта Apache: http://db.apache.org/derby/derby_downloads.html

Большинство из того, что вы сделали в своем описании, кажется мне удобным; Я подозреваю, что место, где вы сбились с пути, - это когда вы распаковали derbyclient.jar.

Хотя файл «* .jar» на самом деле является действительным ZIP-архивом, вы не должны распаковывать эти упакованные файлы jar. Вместо этого вы должны оставить банку как «derbyclient.jar», а затем установите CLASSPATH для включения «derbyclient.jar» в качестве одной из записей в списке CLASSPATH.

Наконец, обратите внимание, что URL соединения JDBC

jdbc:derby:sampleDB:create=true 

является правильным URL JDBC Connection для встроенной конфигурации Derby, а не для клиент-сервер конфигурации Derby в.

Так что даже если вы получите хорошую копию derbyclient.jar в ваш CLASSPATH правильно, вы не сможете использовать

jdbc:derby:sampleDB:create=true 

Вместо этого, вы должны либо использовать стиль клиент-сервер JDBC URL соединения, такие как:

jdbc:derby://my.server.name:1527/sampleDB 

(и научиться работать с Derby Network Server,), или вам нужно переключиться на использование встроенного драйвера (org.apache.derby.jdbc.EmbeddedDriver).

Для получения дополнительной информации об этом понятии конфигурации, см: http://db.apache.org/derby/docs/10.11/getstart/cgsquck70629.html

И для получения дополнительной информации о URL JDBC Connection и двух классов драйверов JDBC, см: http://db.apache.org/derby/docs/10.11/getstart/cgsquck19524.html

После того, как вы имели шанс для работы в руководстве Derby Getting Started, я рекомендую задать некоторые последующие вопросы на основе того, что вы узнали в ходе этого опыта.

+0

Спасибо за ответ. Причина, по которой я перешел на другой сайт, - это то, что я изначально пытался скачать прямо с apache.org (как db-derby.10.11.1.1-bin.zip, так и db-derby.10.11.1.1-lib.zip) и во время процесс распаковки, я получил это сообщение об ошибке: «непредвиденная ошибка не позволяет вам копировать файл ... 0x80004005 ... derbyTesting.jar» – twd000

+1

Я должен был быть более ясным; файл, загруженный с java2s, был zip-файлом, содержащим один файл jar. Я расстегнул молнию, а не банку. Теперь, когда я понимаю разницу между двумя конфигурациями, я хочу встроенную базу данных, а не клиент/сервер. База данных будет находиться локально на ПК и будет доступна только одному пользователю за раз. Я попытаюсь работать над EmbeddedDriver – twd000

+0

Действительно, у меня иногда возникают проблемы с «загрузками зеркал» Apache. Похоже, ваша загрузка не была полной, потому что почтовый индекс был поврежден. Вы подтвердили подпись md5 загрузки после ее завершения? Я предлагаю вам отбросить поврежденные архивы bin.zip и lib.zip и снова перезагрузить их из Apache, используя при необходимости другое зеркало загрузки. –

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