内存数据库的概念以及如何查看我的数据是否在HSQL DB中填充?

时间:2011-08-13 22:31:41

标签: database hsqldb in-memory-database database-tools

我在内存数据库中使用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中的内容正确填充? / p>

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

3 个答案:

答案 0 :(得分: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,connect,创建一些测试表和测试数据

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

答案 1 :(得分:2)

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

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

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mem:test

答案 2 :(得分: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的简短url:h2:tcp:// localhost / mem:db1。

您需要使用服务器模式,因此客户端可以从网络连接到它。 您需要注意的一件事是,在内存模式下,因为它在内存中,当您的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”

注意

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