java.sql.DatabaseMetaData

Интерфейс java.sql.DatabaseMetaData запрашивает у СУБД информацию о структуре объектов БД, поддерживаемых СУБД функциях, типах данных и другие возможности. Интерфейс java.sql.DatabaseMetaData позволяет клиентским приложениям извлекать необходимую информацию в реальном времени (при условии, что пользователь имеет соответствующие права на выполнение запросов), благодаря чему можно получать не относящиеся конкретно к выполнению/обработке запросов подробности, например, какой символ используется в качестве разделителя и как СУБД обрабатывает null-значение при сортировке.

Пример

import java.sql.*;
import com.relx.jdbc.LinterDriver;

public class DatabaseMetaDataDemo
{
  public static void main(String[] args)
  {
    try
    {
      Driver d = (Driver) Class.forName("com.relx.jdbc.LinterDriver")
          .newInstance();

      String address = "jdbc:linter:linapid:localhost:1070:DEMO";
      String user = "SYSTEM";
      String password = "MANAGER8";
      System.out.println("Driver found. Now connecting to database ");
      Connection con = DriverManager.getConnection(address, user,
                                                            password);

      Statement stmt = con.createStatement();

      DatabaseMetaData dbmd = con.getMetaData();

      System.out.println("Product Name = " +
                                      dbmd.getDatabaseProductName());
      System.out.println("MaxLengthTableName = " +
                                      dbmd.getMaxTableNameLength());

      System.out.println("=== > Geting tables information");

      ResultSet tables = dbmd.getTables(null, null, "%TY%", null);
      while (tables.next())
      {
        String tableName = tables.getString("TABLE_NAME");
        String tableSchema = tables.getString("TABLE_SCHEM");
        if (tableSchema.length()  > 0)
          tableName = tableSchema + "." +tableName;
        System.out.println(tableName);
      }
      stmt.close();
    }
    catch (Exception e)
    {
      System.out.println("Catched :" + e + " mess= " + e.getMessage());
      e.printStackTrace();
    }
  }
}