gpt4 book ai didi

java - 初始化 HSQLDB 实例,然后在应用程序中使用它

转载 作者:行者123 更新时间:2023-11-30 03:41:57 26 4
gpt4 key购买 nike

我对嵌入式数据库的概念是全新的,并选择了 HSQLDB成为我的 Java 应用程序的嵌入式数据库。我认为我从根本上不理解某些事情:我无处可见如何/在哪里:

  • 定义连接数据库时必须使用的用户名/密码凭据
  • 创建新数据库(例如 db_myapp)
  • 为新数据库创建表

对于非嵌入式(“普通”)数据库,我首先使用数据库客户端连接到数据库,然后CREATE db_myapp DB以及它应该有的任何 table 。然后,我的应用程序会期望这些表在运行时存在。

但是对于 HSQLDB,我没有这样的数据库服务器可以连接,所以我不知道如何/在哪里可以在我的应用程序运行之前提前创建这些数据库/表/凭据。

也许这正是“嵌入式”数据库的作用;也许它是嵌入在 JDBC 驱动程序中的整个数据库?无论如何,我仍然需要一种方法来完成上面列出的 3 件事。

我唯一能想到的就是每次我的应用程序启动时运行一些初始化代码。此代码将检查这些构造是否存在,如果它们不存在,则会创建它们。

这里有几个问题:

  • 此方法可能适用于数据库和表,但不适用于 JDBC Connection 本身所需的凭据。我如何/在哪里创建它们?
  • 我什至不确定这是否是使用嵌入式 HSQLDB 的正确/正常方法;有人可以确认我是否步入正轨(即“检查是否存在并如果不存在则创建”方法)吗?
  • 如果我不小心执行了尝试创建已存在的新数据库/表的代码,会发生什么情况? HSQLDB 会忽略它还是会破坏我现有的数据库/表?

最佳答案

简短的回答是,您几乎走在正确的轨道上。

连接到嵌入式数据库实际上与连接到普通数据库服务器没有什么不同,只是连接字符串有点不同。 This section有这方面的信息。问题是您实际上没有单独的“数据库”可供选择,它只是在连接字符串中指定。对于连接:

Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "SA", "");

这将为您提供与嵌入式数据库引擎的连接,该引擎将数据保存在 /opt/db/testdb 文件中。 。嵌入式数据库的默认用户名始终是“SA”,没有密码。老实说,我不知道它是否有效,但如果您确实需要设置不同的密码,您可以尝试执行 ALTER USER SA SET PASSWORD <newPassword> 。它可能会起作用...

就创建表等而言,有几种方法可以实现这一点,具体取决于数据库是作为文件保存还是在内存中保存。通常,嵌入式数据库用于非常简单的数据,因此通过在初始化连接后立即执行语句来创建表。 CREATE TABLE IF NOT EXISTS ...是通常的做事方式。这允许您仅在表尚不存在时创建该表。

如果您正在使用基于文件的数据库,那么 hsqldb 将为您提供另一种选择。看看this documentation关于使用他们的工具访问数据库。这将允许您提前创建一个基于文件的数据库,并设置用户名/密码等内容并设置所有表。然后您只需复制生成的文件以供您的应用程序使用。然后,在您的应用程序连接到它之前,一切都将完成。

所以最终,你可以选择走任何一条路。您可以让应用程序在初始化连接时设置所有内容,也可以提前手动设置。我的偏好是让应用程序在代码中设置它,因为这样您的表定义就更接近实际使用它们的代码。不过,我还没有使用过这样的嵌入式数据库来处理真正复杂的数据,所以我不能诚实地说它的扩展能力如何。

关于java - 初始化 HSQLDB 实例,然后在应用程序中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26636356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com