我一直试图让这项工作连续两天,并尝试了我能找到的所有建议。唉,到目前为止没有成功。
这就是我要做的事情:我正在构建一个小型(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:
打开连接,然后表节点显示可用的表。
但是因为我打算将此应用程序分发给其他人,所以使用绝对路径是行不通的。从我在这里和那里读到的内容似乎也可以指定SQLite数据库文件的相对路径,但是无论我尝试什么,我都无法工作。
奇怪的是,当我在Netbeans中创建连接时,当我将sqlite jdbc驱动程序jar和sqlite数据库文件放在/ lib(在Netbeans项目目录中)的/ db子目录中时,它最初似乎有效:
当我打开新连接时,它会保持这种错觉 -
但是当我打开“Tables”节点时,结果是空的:
类似地,这个连接似乎有效,但是一旦我尝试使用它 - 例如在“从数据库生成实体类”中它告诉我不是该数据库中的任何表。
有没有人知道如何解决这个问题?我非常感激。
Luthien的
答案 0 :(得分:1)
我遵循了相同的步骤,我的调查结果表明,“新建连接向导”中的相对路径与NetBeans的工作目录相关,后者是安装NetBeans的目录。
例如,在您的连接字符串中,您正在“连接”驻留在<NetBeans-Install-Dir>/ithildin-13-11-11.db
的数据库。由于这个数据库不存在,SQLite正在为你创建它,它给你带来了你所看到的“错觉”。在我的测试中,我尝试使用相对路径连接到的数据库是在NetBeans安装目录中创建的。
换句话说,一切都按设计工作。
在您的代码中,您可以使用相对路径,应该相对于项目目录的顶部。在NetBeans的数据库服务中,您需要使用绝对路径连接到存在的数据库(在您的项目中),或者您需要提供从NetBeans的安装目录开始的相对路径。
我的建议是你在代码中使用相对路径,在新连接向导中使用绝对路径。