面向简单应用的并发嵌入式Java数据库
我正在尝试构建一个简单的GUI,您可以在其中编写一些整数。这些整数应该被写入我正在寻找的数据库中 到目前为止还不错。然后,数据库中的数据应用于另一个已存在的独立应用程序 我已经用SQLite尝试过了,但是我收到了很多“数据库锁定”错误。我搜索了谷歌。我经常读到的关键答案是切换到支持并发进程的数据库 我进一步研究了H2和HSQLDB。两者似乎都是合法的,但要复杂得多 所以我想: 我希望GUI可以移植到一个.jar文件中(或仅在一个文件夹中)并与数据库相结合,因此当我切换计算机时,我不必将DB安装在某个文件夹中,如主目录或其他什么。使用SQLite,您只需执行以下操作:面向简单应用的并发嵌入式Java数据库,java,sql,database,h2,Java,Sql,Database,H2,我正在尝试构建一个简单的GUI,您可以在其中编写一些整数。这些整数应该被写入我正在寻找的数据库中 到目前为止还不错。然后,数据库中的数据应用于另一个已存在的独立应用程序 我已经用SQLite尝试过了,但是我收到了很多“数据库锁定”错误。我搜索了谷歌。我经常读到的关键答案是切换到支持并发进程的数据库 我进一步研究了H2和HSQLDB。两者似乎都是合法的,但要复杂得多 所以我想: 我希望GUI可以移植到一个.jar文件中(或仅在一个文件夹中)并与数据库相结合,因此当我切换计算机时,我不必将DB安装在
Connection con = DriverManager.getConnection("jdbc:sqlite:test.db");
如您所见,不需要路径信息。如何使用H2或HSQLDB实现这一点
我真的很期待你的建议。但请只开放源代码
最亲切的问候,非常感谢
Stefan处理嵌入式db文件的创建不应该是一个大问题-但是如果您真的不喜欢SQLite的这一特性:它应该能够很好地处理并发性,以满足基本的使用要求-“数据库锁定”听起来更像是应用程序级的问题对于H2和HSQLDB,您也可以这样做
对于H2,格式为
jdbc:H2:test
的数据库URL将在应用程序的当前工作目录中创建一个名为test.H2.db
的文件。如果这是你想要的,那没关系。请注意,我通常不建议这样做,因为许多人有时会遇到这样的问题,即他们有时会在不同的目录中启动应用程序(这将创建一个新的数据库)。因此,我建议使用jdbc:h2:~/test
,这意味着数据库文件是相对于当前用户主目录存储的。谢谢。如果我错了,请纠正我:这是否意味着如果有一个可执行的.jar文件并在另一台计算机上运行->在第一次运行时,数据库将存储在“~/test”?是的,使用数据库URLjdbc:h2:~/test
,数据库文件将存储在当前用户主目录中,名称为test.h2.db
。如果这样一个数据库文件已经存在,它当然会被重新使用。谢谢马克。我一定会尝试一下,仔细看看我的应用程序中可能存在的开放连接。我很想继续使用SQLite,但谷歌发现的不同帖子让我想切换到另一个数据库。谢谢