是否可以浏览H2或HSQLDB内存数据库的内容以进行查看?例如,在与Hibernate进行调试会话期间,以检查何时执行刷新;或确保实例化数据库的脚本给出预期的结果。
是否存在可以将其嵌入代码的插件或库?
请提供您正在谈论的对象(H2或HSQLDB),以防您对其中之一有特定的答案。
您可以在将访问相同内存数据库的应用程序中运行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测试框架,则不会看到正在运行的事务所做的更改,并且该事务将在测试后立即回滚。
我不知道为什么它在您的机器上不能正常工作,但是我不得不花一天时间才能使其正常工作。
如何通过ODBC和MS-Access,Excel舒适地查看(并编辑)内容?软件版本::
对于H2,如果有数据库连接对象,则可以在调试会话期间单击start a web server within your code。您可以将此行添加到代码中,也可以(动态)添加为“监视表达式”:
在H2中,对我有用的是:
使用HSQLDB,您有几个内置选项。
您可以将其公开为JMX功能,可通过JConsole启动:
这是一个Play 2控制器,用于初始化H2 TCP和Web服务器:
对于HSQLDB,以下内容对我有用:
我在使用Connection is broken: "unexpected status 16843008"
到H2版本1.4.190远程连接到inMemory(以及文件)时遇到问题,直到不降级到1.3.176。参见Grails accessing H2 TCP server hangs
这更多是对托马斯·穆勒(Thomas Mueller)以前的帖子的评论,而不是一个答案,但并没有获得足够的声誉。如果您是Spring JDBC模板,则获得连接的另一种方法是使用以下方法: