3

我在内存数据库中使用 HSQL 来测试我的应用程序并使用 SQL Server 作为主数据库,现在在进行测试时,HSQL 数据库正在填充与我的 SQL Server 中相同的数据,现在我正在尝试测试特定的从数据库中检索数据的服务(如果直接运行服务,它将查询 MS 服务器,如果从测试中调用,它将查询 HSQL 数据库)

当我运行查询时,我能够看到来自 MS Server 的数据,但如果在其上运行相同的查询,HSQL Db 不会返回任何数据。我的预感是 HSQL DB 没有被数据填充,有没有办法我可以去查看我在 HSQL DB 中有哪些表以及如何在 HSQLDB 中填充数据,我想查看数据和我没有任何 gui 客户端来查看 HSQL 数据库是如何填充的以及哪些数据在哪个表中。我们是否有一个好的客户端,我如何使用它连接到 HSQL 数据库,以及我如何才能真正看到在 HSQL Cover 下发生的事情,而不是仅仅假设 HSQL 正确地填充了我们在 SQL Server 中的内容?

任何建议都会有很长的路要走?

4

3 回答 3

10

这里我添加一个详细的步骤

如何在服务器模式下运行仅内存的 HSQLDB?

1)下载最新版本的hsqldb-2.2.5.zip

2)解压,打开bin文件夹

3)修改runServer.bat,如 cd ..\data @java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server -database.0 mem:aname -dbname.0 aliasdb 并点击runServer.bat启动服务器

4)运行runManager.bat,选择Server type,输入url jdbc:hsqldb:hsql://localhost/aliasdb,连接,创建一些测试表和测试数据

5)再次运行runManager.bat启动另一个客户端,选择服务器类型,输入url jdbc:hsqldb:hsql://localhost/aliasdb,连接,你会找到你创建的数据。

于 2011-08-19T13:43:42.220 回答
2

使用 HSQLDB 进行开发的最佳方式是运行一个服务器实例(它可以将数据纯粹存储在内存中)。在服务器开启时,您可以从多个客户端(包括 GUI)连接以测试和浏览数据。

jdbc:hsqldb:hsql://localhost 形式的 URL 用于访问服务器,而服务器本身使用 jdbc:hsqldb:mem:test 作为其内部内存数据库。必须首先使用如下命令启动服务器:

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mem:test
于 2011-08-13T23:41:54.300 回答
0

您可以使用 Derby In-memory-database 和 H2 in-memory-database。它们很好。但是 H2 的性能更好。H2 有一个 Web 控制台 GUI,而 Derby 有 Eclipse 插件 GUI。你可以试试看。我在项目中使用过它们。H2 数据库在 SO 中有一个标签,它的作者将在 SO 中为您提供支持。我认为 fredit 适合使用服务器模式而不是嵌入模式。但他的网址似乎不正确。至少它应该使用mem。对于 Derby,url 是 jdbc:derby://myhost:1527/memory:myDB;create=true。这是 H2 jdbc:h2:tcp://localhost/mem:db1 的示例 url。

您需要使用服务器模式,以便客户端可以从网络连接到它。您需要注意的一件事是,在内存模式下,因为它在内存中,当您的 java 进程结束时,JVM 不存在,DB 中的数据也会丢失。但对于测试,它成为一个优势。您不需要清除测试数据。

H2 有一个非常好的测试功能。它具有 SQL 支持,可以为 IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle 和 PostgreSQL 运行兼容的 SQL。这意味着即使您在 MS SQL Server 中使用特殊的 SQL,也可以在 H2 中获得相同的结果。我相信你会喜欢的。

链接

我知道 HSQL 有内存模式,但我没有使用它。

祝你好运。

更新

我相信如果您改为在测试用例中编写查询,它将返回结果。我在我的测试用例中做了很多。即使在嵌入模式下,只要您在测试用例中创建 JDBC 连接。如果你觉得不方便,你甚至可以将数据输出转储到文件中。但是你必须在你的测试用例中将数据加载到 HSQL 中,你可以使用 BeforeClass 来做。如果你不能这样做,你必须使用服务器模式。

服务器内存模式的 JDBC url 中的 hsql 似乎有点不同

有关详细信息,请参阅 http://hsqldb.org/doc/guide/guide.html#N108D2连接

您必须处理一些服务器配置。

@Rachel,我终于找到了一个链接来帮助您在内存模式下设置服务器模式。看这个。这有点复杂。

“在服务器模式下运行仅内存 HSQLDB”

笔记

第二个链接没有详细说明如何正确连接。所以试试第一个。

于 2011-08-14T00:10:48.177 回答