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

发布于 2024-11-29 08:29:22 字数 477 浏览 1 评论 0原文

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

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

有什么建议会走得很远吗?

I am using HSQL in memory database for test purpose of my application and using SQL Server as main database, now when am doing test then HSQL Database is being populated with same data that I have in my SQL Server, now I am trying to test particular service which is retrieving data from Database(it would query MS Server if directly service is run or it will query HSQL Database if called from test)

I am able to see data from MS Server when I run the query but HSQL Db does not return any data if am running same query on it. My hunch here is that HSQL DB is not being populated with the data, is there a way where in I can go and look in what tables I have in HSQL DB and how data is being populated in HSQLDB, i want to see data and i do not have any gui client to see how HSQL Database is populated and what data goes in what table. Do we have a good client for the same and how can I connect to HSQL Database using it and also how can I actually see things happening under HSQL Cover rather than just assuming that HSQL is being populated properly with what we have in SQL Server?

Any suggestions would go long way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情魔剑神 2024-12-06 08:29:22

的详细步骤

这里我添加了如何在服务器模式下运行仅内存的HSQLDB?

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

2) 解压,打开bin文件夹

3)修改runServer.bat就像
cd ..\数据
@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,连接,你会发现你创建的数据。

Here I add a detailed steps of

How To Running a memory-only HSQLDB in server mode?

1) Download the latest version hsqldb-2.2.5.zip

2) unzip it,open the bin folder

3) modify the runServer.bat like
cd ..\data
@java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server -database.0 mem:aname -dbname.0 aliasdb
and click the runServer.bat to start server

4) run the runManager.bat, select Server type, enter the url
jdbc:hsqldb:hsql://localhost/aliasdb,connect, create some test table and test data

5) run the runManager.bat again to start another client,select Server type, enter the url jdbc:hsqldb:hsql://localhost/aliasdb, connect, you will find the data you created.

深海蓝天 2024-12-06 08:29:22

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

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

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

The best way to use HSQLDB for development is running a Server instance (which could store data purely in memory). While the server is on, you can connect from multiple clients, including GUI, to test and browse the data.

The URL form jdbc:hsqldb:hsql://localhost is used to access the server, while the server itself is using jdbc:hsqldb:mem:test as its internal memory database. The server must be started first with a command like this:

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mem:test
只等公子 2024-12-06 08:29:22

您可以使用 Derby 内存数据库和 H2 内存数据库。它们都很好,但 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来做到这一点。如果你不能做到这一点,你必须使用服务器模式。

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

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

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

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

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

注意

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

You can use Derby In-memory-database and H2 in-memory-database. They are good.but H2 has a better performance. H2 has a web console GUI and Derby has eclipse plugin GUI. You can try it. I have used them in the project. H2 Database has a tag in SO and its auther will support you in SO. I think fredit is right for using server mode instead of embed mode. But his url doesn't seem to be right. At least it should use mem. For Derby, the url is jdbc:derby://myhost:1527/memory:myDB;create=true. This is the exmple url for H2 jdbc:h2:tcp://localhost/mem:db1.

You need to use server mode, so client can connect to it from network.
One thing you need take care is ,in memory mode, since it's in memory, when your java process is over,the JVM is not there, the data in DB is also lost. But for testing,it becomes an advantage. You don't need to clear the test data.

H2 has a very good feature for test purpose.It has SQL support which runs compatibility SQL for IBM DB2, Apache Derby, HSQLDB, MS SQL Server, MySQL, Oracle, and PostgreSQL. Which means even you use special SQL in MS SQL Server can get the same result in H2. I believe you will like it.

the links

I know HSQL has in memory mode, but i haven't used it.

Good luck.

UPDATE

I believe if you instead write query in your test case, it will return results. I have done this a lot in my test case. Even in embed mode as long as you create your JDBC connection in your test case. If you feel this is inconvenient, you can even dump the data output to files.But you must load the data into the HSQL in your test case, you can use BeforeClass to do it.If you cannot do this,You have to use server mode.

The hsql seems to be a bit different in JDBC url for server memory mode

for details refer to
http://hsqldb.org/doc/guide/guide.html#N108D2 Connections

You have to deal with some server configs.

@Rachel, I Finally find a link to help you set up server mode with in memory mode.
Look at this. It's a bit complex.

"Running a memory-only HSQLDB in server mode"

NOTE

The second link didn't tell in detail how to connect correctly.
So try the first one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文