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

2022-08-31 14:14:56

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

我尝试使用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));
}

有人可以帮我吗?


答案 1

您需要循环访问结果集调用 。next()

这是 java2s.com 的一个例子:

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

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


答案 2
 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();
        }
    }

推荐