Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向简单应用的并发嵌入式Java数据库_Java_Sql_Database_H2 - Fatal编程技术网

面向简单应用的并发嵌入式Java数据库

面向简单应用的并发嵌入式Java数据库,java,sql,database,h2,Java,Sql,Database,H2,我正在尝试构建一个简单的GUI,您可以在其中编写一些整数。这些整数应该被写入我正在寻找的数据库中 到目前为止还不错。然后,数据库中的数据应用于另一个已存在的独立应用程序 我已经用SQLite尝试过了,但是我收到了很多“数据库锁定”错误。我搜索了谷歌。我经常读到的关键答案是切换到支持并发进程的数据库 我进一步研究了H2和HSQLDB。两者似乎都是合法的,但要复杂得多 所以我想: 我希望GUI可以移植到一个.jar文件中(或仅在一个文件夹中)并与数据库相结合,因此当我切换计算机时,我不必将DB安装在

我正在尝试构建一个简单的GUI,您可以在其中编写一些整数。这些整数应该被写入我正在寻找的数据库中

到目前为止还不错。然后,数据库中的数据应用于另一个已存在的独立应用程序

我已经用SQLite尝试过了,但是我收到了很多“数据库锁定”错误。我搜索了谷歌。我经常读到的关键答案是切换到支持并发进程的数据库

我进一步研究了H2和HSQLDB。两者似乎都是合法的,但要复杂得多

所以我想:

我希望GUI可以移植到一个.jar文件中(或仅在一个文件夹中)并与数据库相结合,因此当我切换计算机时,我不必将DB安装在某个文件夹中,如主目录或其他什么。使用SQLite,您只需执行以下操作:

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”?是的,使用数据库URL
jdbc:h2:~/test
,数据库文件将存储在当前用户主目录中,名称为
test.h2.db
。如果这样一个数据库文件已经存在,它当然会被重新使用。谢谢马克。我一定会尝试一下,仔细看看我的应用程序中可能存在的开放连接。我很想继续使用SQLite,但谷歌发现的不同帖子让我想切换到另一个数据库。谢谢