Java DB数据库,检查所有表名

Java DB数据库,检查所有表名,java,derby,Java,Derby,我在java应用程序中有一个嵌入式Derby数据库,并且有多个表(它们被创建和删除,所以没有任何设置是固定的)。我希望能够返回数据库中当前所有表的名称列表,因为我必须在应用程序中显示该列表并从中获取所有信息 最简单的方法是什么?我不需要代码,只需要一个或多个方法。我是一个糟糕的谷歌用户 目前,我的代码通过从输入的特定表名中获取ResultSet来工作,但这只是出于测试目的,我需要能够显示我拥有的表的完整列表 编辑:我当前的解决方法实际上与发布的不同。我只是有另一个表,它保存所有创建的表名,并在

我在java应用程序中有一个
嵌入式Derby数据库
,并且有多个
(它们被创建和删除,所以没有任何设置是固定的)。我希望能够返回
数据库中当前所有
表的名称列表
,因为我必须在应用程序中显示该列表并从中获取所有信息

最简单的方法是什么?我不需要代码,只需要一个或多个方法。我是一个糟糕的谷歌用户

目前,我的代码通过从输入的特定表名中获取
ResultSet
来工作,但这只是出于测试目的,我需要能够显示我拥有的表的完整列表


编辑:我当前的解决方法实际上与发布的不同。我只是有另一个
,它保存所有创建的表名,并在创建/删除一个表时更新。显然不是最好的方法,但现在对我来说很有效

DatabaseMetaData metaData = connection.getMetaData();
ResultSet resultSet = metaData.getTables(null, "schenaName", "%" ,new String[] {"TABLE"} );
while (resultSet.next()) {
  System.out.println(resultSet.getString(3));
}
添加新答案:

 Connection connection = getDBConnection();
 DatabaseMetaData dbMetaData = connection.getMetaData();
 //getting catalogs for mysql DB, if it is not working for your DB, try dbMetaData.getSchemas();
 ResultSet catalogs = dbMetaData.getCatalogs();
 while(catalogs.next()){
       String catalogName = catalogs.getString(1);
         //excluding table names from "mysql" schema from mysql DB.
       if(!"mysql".equalsIgnoreCase(catalogName)){
            ResultSet tables = dbMetaData.getTables(catalogName, null, null, null);
            while(tables.next()){
                 System.out.println(catalogName + "::"+tables.getString(3));
            }
        }
  }
使用元数据是(某种程度上)更具可移植性的解决方案。请注意,您不需要Derby中的目录内容,因为没有目录。您可以直接为目录发出带有null的dmd.getTables(…)。如果您跟踪的所有表都在一个模式中(并且该模式中没有任何其他表),那么getTables(null,“schemaName”,null,null)应该可以做到这一点

如果您需要更高级的查询,并且不关心可移植性,您可以查看

通过它,您可以访问元数据作为表,以便对其执行联接和其他复杂查询。

尝试以下操作:

select tableName from sys.systables 

你应该从你的系统中得到所有的表

你试过显示表格了吗?@lpiepiora我会试试的,谢谢。目前正在调试其他代码,但可能需要一些时间。好的,我将用相关信息更新此代码。我目前得到了所有
sys
表的列表。我想我确实需要限制我的搜索,所以我很感激答案。好吧,简单地说,我需要将模式限制为除sys之外的任何内容。(和一个IBM系统)。不知道怎么做,有什么建议吗?