Как я могу указать относительный URL-адрес JDBC SQLite (путь?) - PullRequest
2 голосов
/ 20 ноября 2011

Я пытался получить эту работу в течение двух дней и перепробовал все предложения, которые смог найти. Увы, пока безуспешно.

Это то, что я пытаюсь сделать: я создаю небольшое (java swing) приложение для базы данных рабочего стола. Я использую Netbeans 7.0 и SQLite и обнаружил, что драйвер JDBC из http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC работает нормально, если в URL-адресе JDBC указан абсолютный путь:

jdbc:sqlite://Users.../lib/db/ithildin.db

Вот как это выглядит на вкладке «Службы Netbeans» -> «Базы данных» с использованием абсолютного URL:

so far, so good

открытие соединения, а затем узел таблиц показывает доступные таблицы.

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

Странно то, что когда я создаю соединение в Netbeans, оно изначально работает, когда я помещаю jar драйвера sqlite jdbc и файл базы данных sqlite в подкаталог / db в / lib (в каталоге проекта Netbeans):

Netbeans new connection wizard

и когда я открываю новое соединение, он поддерживает эту иллюзию -

looking good

но когда я открываю узел "Таблицы", он оказывается пустым:

uh oh

Аналогично, это соединение кажется действительным, но как только я пытаюсь его использовать - например, в «Генерировании классов сущностей из базы данных», он сообщает мне, что в этой базе данных нет.

Кто-нибудь знает выход из этого? Я очень ценю это.

Lúthien

1 Ответ

1 голос
/ 21 ноября 2011

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

ДляНапример, в строке подключения вы «подключаетесь» к базе данных, которая находится в <NetBeans-Install-Dir>/ithildin-13-11-11.db.Поскольку эта база данных не существует, SQLite создает ее для вас, что дает вам «иллюзию», которую вы видите.В моих тестах база данных, к которой я пытался подключиться с помощью относительного пути, была создана в каталоге установки NetBeans.

Другими словами, все работает так, как задумано.

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

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

...