1

这是我第一次尝试将 EJB3.1 实体与 JBoss AS7.1.1 服务器一起使用。我发现 HSQLDB 不再包含在 JBoss 版本 7 中。首先,我通过管理控制台 --> 部署 --> 管理部署添加了 hsqldb.jar。之后我通过 Profil --> Connector -> Datasources 添加了一个新的数据源

我的第一个示例代码工作正常:

[...]     
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:/DefaultDS");
con = ds.getConnection();
stmt = con.createStatement();
stmt.execute("drop table timers;");
stmt.execute("Create table timers(id char(10));");
stmt.execute("INSERT INTO timers  (id) VALUES (20)");
stmt.execute("INSERT INTO timers  (id) VALUES (21)");
ResultSet number = stmt.executeQuery("select * from timers");
[...]

我的问题是如何管理(=创建、删除和更新新表)在文件夹 jobss\standalone\data\hypersonic 中创建的数据库。目前我没有“概述”创建了哪些表,它们的结构和数据。

是否有人为我提供处理该问题的提示或教程?谢谢你。

4

2 回答 2

1

就我而言,这比我一开始想的要容易。我需要管理存储在 AS 7.1.x 服务器中的数据库。由于缺少 JMX 控制台,我无法通过管理访问该数据库。我已经添加了数据源和管理部署,如第一篇文章中所述。

要管理这样的数据库,您可以使用“HSQLDB 数据库管理器”,选择“HSQL 数据库引擎独立”作为类型,选择“jdbc:hsqldb:file:«MY_PATH_TO_DB_FOLDER_IN_JBOSS»”作为 URL。现在我可以在服务器和 EJB 环境之外管理数据库。

谢谢你的帮助和你的灵感。

于 2012-10-27T09:59:26.050 回答
0

您总是查询 INFORMATION_SCHEMA 表以找出哪些表已经存在。一旦你知道一个表存在,你就可以执行一个你知道不会花费很长时间的查询,以便了解数据的状态。

例如,第一个查询将显示是否有 'TIMERS' 表,第二个查询将显示表中是否有任何数据:

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'TIMERS'
SELECT * FROM TIMERS LIMIT 1

尝试始终在每个表上定义一个主键以加快查询速度。

要访问嵌入在应用服务器中的数据库,您应该将 org.hsqldb.server.Servlet 类添加为 servlet,然后使用数据库管理工具和 URL 连接到应用服务器,例如jdbc:hsqldb:http:<your servlet url here>

于 2012-10-24T15:18:01.990 回答