获取spring SimpleJdbcTemplate中所有表名的列表

时间:2009-11-23 01:20:57

标签: java spring-jdbc

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

正在查询的数据库是Oracle,如果这有任何帮助。感谢。

3 个答案:

答案 0 :(得分:14)

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

可以找到您尝试使用这些类进行相同调用的示例here

该链接的示例代码:

类别:

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);
}

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

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

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