10

有没有办法使用 Spring 的 SimpleJdbcTemplate 获取数据库中所有表名的列表?

如果有任何帮助,被查询的数据库是 Oracle。谢谢。

4

3 回答 3

15

Spring 有一个DatabaseMetaDataCallback对象可以处理 duffymo 链接到的解决方案的一些样板方面。然后,您可以在调用时传递该对象JDBCUtils.extractDatabaseMetaData

可以在此处找到尝试使用这些类进行相同调用的示例。

该链接的示例代码:

班级:

class GetTableNames implements DatabaseMetaDataCallback {

        public Object processMetaData(DatabaseMetaData dbmd) throws SQLException {
            ResultSet rs = dbmd.getTables(dbmd.getUserName(), null, null, new String[]{"TABLE"});
            ArrayList l = new ArrayList();
            while (rs.next()) {
                l.add(rs.getString(3));
            }
            return l;
        }
    }

用法:

GetTableNames getTableNames = new GetTableNames();
try {
    Object o = JdbcUtils.extractDatabaseMetaData(dataSource, getTableNames);
    System.out.println(o);
} catch (MetaDataAccessException e) {
    System.out.println(e);
}
于 2009-11-23T01:49:52.077 回答
7

您始终可以使用 Connection 随意获取 java.sql.DatabaseMetaData。SimpleJdbcTemplate 中没有任何方法可以帮助您,但坦率地说,没有必要。

DatabaseMetaData md = c.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString("TABLE_NAME"));
}
于 2009-11-23T01:37:31.080 回答
1

查询 USER_TABLES 视图,您将获得它们。

在 sqlplus 中闲逛,当然是先看形状。

于 2009-11-23T01:38:08.867 回答