【问题标题】:Concurrency embedded Java Database for simple Application用于简单应用的并发嵌入式 Java 数据库
【发布时间】:2013-05-16 10:31:43
【问题描述】:

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

到目前为止一切顺利。然后应将数据库中的数据用于另一个已经存在的独立应用程序。

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

我进一步了解了 H2 和 HSQLDB。它们似乎都是合法的,但要复杂得多。

所以我想知道:

我希望 GUI 可移植到与数据库结合的 .jar 文件(或仅文件夹)中,因此当我切换计算机时,我不必将数据库安装在某个文件夹中,如 home-目录什么的。使用 SQLite,您所做的就是:

Connection con = DriverManager.getConnection("jdbc:sqlite:test.db");

如您所见,不需要路径信息。如何使用 H2 或 HSQLDB 做到这一点?

我非常期待您的建议。但请只开源。

最诚挚的问候,非常感谢!

斯蒂芬

【问题讨论】:

    标签: java sql database h2


    【解决方案1】:

    使用 H2 和 HSQLDB,您也可以这样做。

    使用 H2,jdbc:h2:test 形式的数据库 URL 将在应用程序的当前工作目录中创建一个名为 test.h2.db 的文件。如果这是你想要的,那很好。请注意我通常不建议这样做,因为很多人会遇到问题,他们有时会在不同的目录中启动应用程序(然后会创建一个新的数据库)。因此,我建议使用jdbc:h2:~/test,这意味着数据库文件是相对于当前用户主目录存储的。

    【讨论】:

    • 谢谢托马斯。如果我错了,请纠正我:这是否意味着如果有一个可执行的 .jar 文件并在另一台计算机上运行它 -> 在第一次运行时,数据库将存储在“~/test”?
    • 是的,使用数据库 URL jdbc:h2:~/test,数据库文件将存储在当前用户主目录中,名称为 test.h2.db。如果这样的数据库文件已经存在,当然会被重新使用。
    【解决方案2】:

    处理嵌入式 db 文件的创建应该不是一个大问题 - 但如果你真的不喜欢 SQLite 的这种坚持:它应该能够很好地处理并发性以供基本使用 - “数据库锁定”听起来更像是一个应用程序级别的问题

    【讨论】:

    • 谢谢马克。我一定会试一试,并仔细查看我的应用程序中可能打开的连接。我很想继续使用 SQLite,但谷歌发现的不同帖子让人想到切换到另一个数据库。谢谢!
    猜你喜欢
    • 2012-04-04
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多