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

发布于 2024-08-12 02:35:38 字数 92 浏览 8 评论 0原文

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

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

Is there a way to obtain the list of all table names in the database using Spring's SimpleJdbcTemplate?

The database being queried is Oracle if that helps in any way. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

剑心龙吟 2024-08-19 02:35:38

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

Spring has a DatabaseMetaDataCallback object that can take care of some of the boiler plate aspects of the solution that duffymo has linked to. You can then pass that object when calling JDBCUtils.extractDatabaseMetaData.

An example of making the same call you're trying to make with those classes can be found here.

Sample code from that link:

Class:

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

Usage:

GetTableNames getTableNames = new GetTableNames();
try {
    Object o = JdbcUtils.extractDatabaseMetaData(dataSource, getTableNames);
    System.out.println(o);
} catch (MetaDataAccessException e) {
    System.out.println(e);
}
计㈡愣 2024-08-19 02:35:38

您始终可以使用 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"));
}

You're always free to get java.sql.DatabaseMetaData using the Connection. There aren't any methods in SimpleJdbcTemplate to help you, but frankly there's no need.

DatabaseMetaData md = c.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString("TABLE_NAME"));
}
灼痛 2024-08-19 02:35:38

查询 USER_TABLES 视图就可以得到它们。

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

Query the USER_TABLES view and you will get them.

poke around in sqlplus, of course, to see the shape first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文