Easiest way to obtain database metadata in Java? Easiest way to obtain database metadata in Java? database database

Easiest way to obtain database metadata in Java?


It's easily done using DdlUtils:

import javax.sql.DataSource;import org.apache.ddlutils.Platform;import org.apache.ddlutils.PlatformFactory;import org.apache.ddlutils.model.Database;import org.apache.ddlutils.platform.hsqldb.HsqlDbPlatform;public void readMetaData(final DataSource dataSource) {  final Platform platform = PlatformFactory.createNewPlatformInstance(dataSource);  final Database database = platform.readModelFromDatabase("someName");  // Inspect the database as required; has objects like Table/Column/etc.}


Take a look at SchemaCrawler (free and open source), which is another API designed for this purpose. Some sample SchemaCrawler code:

    // Create the optionsfinal SchemaCrawlerOptions options = new SchemaCrawlerOptions();// Set what details are required in the schema - this affects the// time taken to crawl the schemaoptions.setSchemaInfoLevel(SchemaInfoLevel.standard());options.setShowStoredProcedures(false);// Sorting optionsoptions.setAlphabeticalSortForTableColumns(true);// Get the schema definition // (the database connection is managed outside of this code snippet)final Database database = SchemaCrawlerUtility.getDatabase(connection, options);for (final Catalog catalog: database.getCatalogs()){  for (final Schema schema: catalog.getSchemas())  {    System.out.println(schema);    for (final Table table: schema.getTables())    {      System.out.print("o--> " + table);      if (table instanceof View)      {        System.out.println(" (VIEW)");      }      else      {        System.out.println();      }      for (final Column column: table.getColumns())      {        System.out.println("     o--> " + column + " (" + column.getType()                           + ")");      }    }  }}

http://schemacrawler.sourceforge.net/