如何从数据库中获取所有表名?

新手上路,请多包涵

我想从数据库模式中检索所有表名,如果可能的话,获取所有以指定前缀开头的表。

我尝试使用 JDBC 的 connection.getMetaData().getTables() 但它根本不起作用。

 Connection jdbcConnection = DriverManager.getConnection("", "", "");
DatabaseMetaData m = jdbcConnection.getMetaData();
ResultSet tables = m.getTables(jdbcConnection.getCatalog(), null, "TAB_%", null);
for (int i = 0; i < tables.getMetaData().getColumnCount(); i++) {
   System.out.println("table = " + tables.getMetaData().getTableName(i));
}

有人可以帮我吗?

原文由 Maxime ARNSTAMM 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 909
2 个回答

您需要迭代 ResultSet 调用 next()

这是来自 java2s.com 的示例:

 DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString(3));
}

3 列是 TABLE_NAME (参见 DatabaseMetaData::getTables 的文档)。

原文由 Peter Lang 发布,翻译遵循 CC BY-SA 3.0 许可协议

 public void getDatabaseMetaData()
    {
        try {

            DatabaseMetaData dbmd = conn.getMetaData();
            String[] types = {"TABLE"};
            ResultSet rs = dbmd.getTables(null, null, "%", types);
            while (rs.next()) {
                System.out.println(rs.getString("TABLE_NAME"));
            }
        }
            catch (SQLException e) {
            e.printStackTrace();
        }
    }

原文由 Rohit 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题