查看H2或HSQLDB内存数据库的内容

问题描述 投票:85回答:11

是否可以浏览H2或HSQLDB内存数据库的内容以进行查看?例如,在与Hibernate进行调试会话期间,以检查何时执行刷新;或确保实例化数据库的脚本给出预期的结果。

是否存在可以将其嵌入代码的插件或库?

请提供您正在谈论的对象(H2或HSQLDB),以防您对其中之一有特定的答案。

hsqldb h2 in-memory-database
11个回答
56
投票

您可以在将访问相同内存数据库的应用程序中运行H2 web server。您还可以使用任何通用JDBC客户端(例如SquirrelSQL)访问以服务器模式运行的H2。

更新:

Server webServer = Server.createWebServer("-web,-webAllowOthers,true,-webPort,8082").start();
Server server = Server.createTcpServer("-tcp,-tcpAllowOthers,true,-tcpPort,9092").start();

现在,您可以在同一过程中通过jdbc:h2:mem:foo_db URL连接到数据库,或使用foo_db浏览localhost:8082数据库。记住要关闭两个服务器。另请参阅:H2 database in memory mode cannot be accessed by Console

您也可以使用Spring:

<bean id="h2Server" class="org.h2.tools.Server" factory-method="createTcpServer" init-method="start" destroy-method="stop" depends-on="h2WebServer">
    <constructor-arg value="-tcp,-tcpAllowOthers,true,-tcpPort,9092"/>
</bean>
<bean id="h2WebServer" class="org.h2.tools.Server" factory-method="createWebServer" init-method="start" destroy-method="stop">
    <constructor-arg value="-web,-webAllowOthers,true,-webPort,8082"/>
</bean>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" depends-on="h2Server">
    <property name="driverClass" value="org.h2.Driver"/>
    <property name="jdbcUrl" value="jdbc:h2:mem:foo_db"/>
</bean>

顺便说一句,您应该仅依赖于断言,而不是手动查看数据库内容。仅将此用于故障排除。

N.B。如果您使用Spring测试框架,则不会看到正在运行的事务所做的更改,并且该事务将在测试后立即回滚。


0
投票

我不知道为什么它在您的机器上不能正常工作,但是我不得不花一天时间才能使其正常工作。


0
投票

如何通过ODBC和MS-Access,Excel舒适地查看(并编辑)内容?软件版本::


30
投票

对于H2,如果有数据库连接对象,则可以在调试会话期间单击start a web server within your code。您可以将此行添加到代码中,也可以(动态)添加为“监视表达式”:


9
投票

在H2中,对我有用的是:


4
投票

使用HSQLDB,您有几个内置选项。


3
投票

您可以将其公开为JMX功能,可通过JConsole启动:


3
投票

这是一个Play 2控制器,用于初始化H2 TCP和Web服务器:


2
投票

对于HSQLDB,以下内容对我有用:


1
投票

我在使用Connection is broken: "unexpected status 16843008"到H2版本1.4.190远程连接到inMemory(以及文件)时遇到问题,直到不降级到1.3.176。参见Grails accessing H2 TCP server hangs


1
投票

这更多是对托马斯·穆勒(Thomas Mueller)以前的帖子的评论,而不是一个答案,但并没有获得足够的声誉。如果您是Spring JDBC模板,则获得连接的另一种方法是使用以下方法:

© www.soinside.com 2019 - 2024. All rights reserved.