10

SpringのSimpleJdbcTemplateを使用して、データベース内のすべてのテーブル名のリストを取得する方法はありますか?

クエリ対象のデータベースは、何らかの形で役立つ場合はOracleです。ありがとう。

4

3 に答える 3

15

Springには、DatabaseMetaDataCallbackduffymoがリンクしているソリューションのボイラープレートの側面の一部を処理できるオブジェクトがあります。その後、を呼び出すときにそのオブジェクトを渡すことができます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 に答える