sqlite - 如何指定相对 JDBC SQLite url(路径?)

标签 sqlite url netbeans jdbc relative-path

两天来我一直在努力完成这项工作,并尝试了我能找到的所有建议。唉,到目前为止还没有成功。

这就是我想要做的:我正在构建一个小型(java swing)桌面数据库应用程序。我正在使用 Netbeans 7.0 和 SQLite,并从 http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC 中找到了 JDBC 驱动程序。只要我在 JDBC URL 中指定绝对路径,就可以正常工作:

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

下面是它在 Netbeans 的服务 -> 数据库选项卡中的外观,使用绝对 URL:

so far, so good

打开连接,然后表节点显示可用表。

但是因为我打算将这个应用程序分发给其他人,所以使用绝对路径是行不通的。从我在这里和那里阅读的内容来看,似乎也可以指定 SQLite 数据库文件的相对路径,但无论我尝试什么,我都无法让它工作。

奇怪的是,当我在 Netbeans 中创建连接时,当我将 sqlite jdbc 驱动程序 jar 和 sqlite 数据库文件都放在/lib(在 Netbeans 项目目录中)的/db 子目录中时,它最初似乎可以工作:

Netbeans new connection wizard

当我打开新连接时,它会保持这种错觉-

looking good

但是当我打开“表格”节点时,它原来是空的:

uh oh

同样,这个连接似乎是有效的,但是一旦我尝试使用它——例如在“从数据库生成实体类”中,它就会告诉我该数据库中没有任何表。

有谁知道摆脱这种情况的方法?我会很感激的。

露西恩

最佳答案

我已按照与您相同的步骤进行操作,并且我的发现表明新建连接向导中的相对路径是相对于 NetBeans 的工作目录的,该目录是安装 NetBeans 的目录。

例如,在您的连接字符串中,您正在“连接”到位于 <NetBeans-Install-Dir>/ithildin-13-11-11.db 的数据库。 .由于该数据库不存在,SQLite 正在为您创建它,这给您带来了您所看到的“错觉”。在我的测试中,我尝试使用相对路径连接的数据库是在 NetBeans 安装目录中创建的。

换句话说,一切都按设计进行。

在您的代码中,您可以使用相对路径,它应该相对于项目目录的顶部。在 NetBeans 的数据库服务中,您将需要使用绝对路径连接到(在您的项目中)存在的数据库,或者您需要提供从 NetBeans 的安装目录开始的相对路径。

我的建议是在代码中使用相对路径,在新建连接向导中使用绝对路径。

关于sqlite - 如何指定相对 JDBC SQLite url(路径?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202841/

相关文章:

java - 如何混淆基于java的项目

android - ListView 在数据库更新和 adapter.notifyDataSetChanged() 后不更新;

android - 将游标数据复制到 arraylist

url - 在 seo 的 slug url 中使用单词的首字母缩略词是一种好习惯吗?

http - 等号可以出现在查询参数中的第一个等号之后吗?

php - .htaccess 问题,我无法删除 .php

netbeans - 如何为 primefaces 元素启用 javadoc?

mysql - PhpMyAdmin 将安装在我的系统上的什么位置?

java - 如何在Sqlite中获取每个月的第一条和最后一条记录

sqlite - Mono 的复制框架