将数据库连接到 HSQLDB 服务器

Posted

技术标签:

【中文标题】将数据库连接到 HSQLDB 服务器【英文标题】:Connect databases to HSQLDB Server 【发布时间】:2014-01-03 08:34:19 【问题描述】:

我正在以独立方式使用版本 hsqldb-1.8。我想用一些数据库启动服务器。我想使用 HSQLDB 文档中的命令行:

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb

我的问题是我有我需要的每个数据库的脚本,这个命令行创建一个新数据库,而不使用我的脚本。问题可能来自以下几点:

我的脚本的位置 我的脚本的扩展是一个 SQL 文件 命令行中有错误或缺失 命令行不行=>如果可以,有什么办法吗?

我想留在控制台中完成所有这些工作。这样,我只需启动一个脚本即可完成所有工作。任何帮助都感激不尽 !谢谢

【问题讨论】:

是否需要进入数据库才能运行脚本? 好吧.. 我没听懂你在说什么^^ 我有一些脚本,我希望 HSQLDB 使用它们在服务器上创建数据库 我没有使用 hsqldb,但我使用 mysql,例如,如果我的桌面上有一个脚本。我会进入桌面目录,然后从命令行输入 mysql(mysql -u username -p password)。现在我使用命令“source script.sql”所以这就是它的选择方式。是的,扩展名是.sql。希望这是有道理的:) 那将在 MySQL 服务器上创建数据库?是否可以通过 URL 从 webapp 访问数据库? 是的,这取决于您编写的脚本。是的,它将通过应用程序。 【参考方案1】:

我找到了我的问题的解决方案:)

我在目录../hsqldb-1.8.10/hsqldb/ 中创建了一个server.properties 文件,其中包含:

server.database.0=file:mydb;user=test;password=test
server.dbname.0=mydb

我还创建了包含该代码的 mydb.script 文件:

CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE MEMORY TABLE MYDB(ID BIGINT NOT NULL,VERSION INTEGER NOT NULL,NOM VARCHAR(255))
CREATE USER TEST PASSWORD "TEST"
GRANT DBA TO TEST
SET WRITE_DELAY 10
SET SCHEMA PUBLIC
INSERT INTO MYDB VALUES(1,0,'test')

然后,我使用以下命令启动 HSQLDB 服务器:

java -cp ../lib/hsqldb.jar org.hsqldb.Server

我们可以看到数据库创建成功了:

[Server@10f0f6ac]: Database [index=0, id=0, db=file:mydb, alias=mydb] opened successfully in 313 ms.

为了检查数据库是否真的包含我的数据,我使用 HSQLDB DatabaseManager 工具和这个命令:

java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager

连接:

网址:jdbc:hsqldb:file:mydb 用户:测试 密码:测试

之后,我们连接到数据库。执行命令SELECT * FROM MYDB;,可以看到数据库所在的行。

希望这会有所帮助! :)

【讨论】:

如果您不想在数据库上进行任何持久化,只需从您的目录中删除文件mydb.backup。实际上,您唯一需要的文件是mydb.script【参考方案2】:

与 HSQLDB (IMDB) 连接的最简单方法

连接字符串

<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:file:/home/vikask/elmo/db/elmo;" />
<property name="username" value="sa" /> 
<property name="password" value="" />

在这个简单的 Java 项目中使用 Java Annotations 演示 Hibernate、HSQL 和 Maven。 HSQL 数据库用于简化项目,因为我们可以使用内存数据库,并且我们只需要在项目中包含一个 JAR 文件。

要连接到嵌入式 HSQLDB 数据库,请从连接类型列表中选择 JDBC(HSQLDB Embedded)连接类型。如果适用,输入任何登录信息,然后指定是使用现有的嵌入式数据库,还是让 HSQLDB 创建一个新的嵌入式数据库。

如果嵌入式数据库已经存在,浏览到数据库文件所在的目录(例如database_name.log、database_name.script和database_name.properties)并选择database_name.script文件。 如果数据库不存在,请输入或浏览为 HSQLDB 数据库创建新位置。然后,HSQLDB 将创建所需的文件,其前缀为键入的数据库名称。例如,如果键入 /home/vikask/sample 作为数据库的位置,HSQLDB 将创建一个名为 sample.properites 的文件,也许还有 sample.log等。在这种情况下,数据库的实际名称只是简单的示例。

【讨论】:

【参考方案3】:

HSQLDB 创建一个扩展名为 .script 的文件供其内部使用。这不是你创造的东西。

首先运行服务器并连接到其中一个数据库。此时数据库将为空。然后使用 HSQLDB zip 包中的实用工具 SQLTool 在数据库上执行您的脚本。您的脚本创建的所有表和数据都保存在 HSQLDB 数据库中。

【讨论】:

现在,我有一个不同的问题。我使用问题中的命令启动服务器。我已将 SQL 文件的扩展名更改为 SCRIPT 文件。当服务器启动时,我的 SCRIPT 文件已更新,但仍有我的 CREATE TABLE。我尝试使用DatabaseManager 连接到它,但找不到任何USER。我试了数据库的名字,sa还是空白。有什么想法吗? 使用 server.properties 文件解决了 :)

以上是关于将数据库连接到 HSQLDB 服务器的主要内容,如果未能解决你的问题,请参考以下文章

将数据库连接到 HSQLDB 服务器

HSQLDB 数据库多连接

不要连接到 HSQLDB 数据库

连接到 IDE 中现有的 hsqldb 实例

连接到 Play 应用程序中嵌入的 HSQLDB 数据库

使用 hsqldb 创建连接