Schema Discovery
The API Profile supports standard ADO.NET schemas to access profile metadata.
Retrieving the Table Listing
You can use the getTables method of the DatabaseMetaData interface to retrieve a list of tables:
String connectionString = "jdbc:api:Profile=<Path to Profile>;ProfileSettings=<Profile Configuration Settings>";
Connection conn = DriverManager.getConnection(connectionString);
DatabaseMetaData table_meta = conn.getMetaData();
ResultSet rs=table_meta.getTables(null, null, "%", null);
while(rs.next()){
System.out.println(rs.getString("TABLE_NAME"));
}
The getTables method returns the following columns:
Column Name | Data Type | Description |
TABLE_CAT | String | The table catalog. |
TABLE_SCHEM | String | The table schema. |
TABLE_NAME | String | The table name. |
TABLE_TYPE | String | The table type. |
REMARKS | String | The table description. |
Retrieving Column Metadata
You can use the getColumns method of the DatabaseMetaData interface to retrieve column information.
You can restrict the results by the table name.
The code example below retrieves the column names for the NorthwindOData table:
String connectionString = "jdbc:api:Profile=<Path to Profile>;ProfileSettings=<Profile Configuration Settings>"; Connection conn = DriverManager.getConnection(connectionString); DatabaseMetaData table_meta = conn.getMetaData(); ResultSet rs = table_meta.getColumns(null,null,"NorthwindOData", null); while(rs.next()){ System.out.println(rs.getString("COLUMN_NAME")); }The getColumns method returns the following columns:
Column Name | Data Type | Description |
TABLE_CAT | String | The database name. |
TABLE_SCHEM | String | The table schema. |
TABLE_NAME | String | The table name. |
COLUMN_NAME | String | The column name. |
DATA_TYPE | int | The data type identified by the value of a constant defined in java.sql.Types. |
TYPE_NAME | String | The data type name used by the provider. |
COLUMN_SIZE | int | The length in characters of the column or the numeric precision. |
BUFFER_LENGTH | int | The buffer length. |
DECIMAL_DIGITS | int | The column scale or number of digits to the right of the decimal point. |
NUM_PREC_RADIX | int | The radix, or base. |
NULLABLE | int | Whether the column can contain null as defined by the following JDBC DatabaseMetaData constants: columnNoNulls (0) or columnNullable (1). |
REMARKS | String | The column description. |
COLUMN_DEF | String | The default value for the column. |
SQL_DATA_TYPE | int | Reserved by the specification. |
SQL_DATETIME_SUB | int | Reserved by the specification. |
CHAR_OCTET_LENGTH | int | The maximum length of binary and character-based columns. |
ORDINAL_POSITION | int | The column index, starting at 1. |
IS_NULLABLE | String | Whether a null value is allowed: YES or NO. |
SCOPE_CATALOG | String | The table catalog that is the scope of a reference attribute. |
SCOPE_SCHEMA | String | The table schema that is the scope of a reference attribute. |
SCOPE_TABLE | String | The table name that is the scope of a reference attribute. |
SOURCE_DATA_TYPE | int | The source type of a distinct type. Or, a user-generated Ref type. If DATA_TYPE is not DISTINCT, this value is null. If a user-generated Ref, this value is null. |
IS_AUTOINCREMENT | String | Whether the column value is assigned by API in fixed increments. |
IS_GENERATEDCOLUMN | String | Whether the column is generated: YES or NO. |
ISREADONLY | boolean | Whether the column is read-only. |
ISKEY | boolean | Whether the column is a key. |