/* * @(#)DatabaseMetaData.java 1.53 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.sql; /** * Comprehensive information about the database as a whole. *

* This interface is implemented by driver vendors to let users know the capabilities * of a Database Management System (DBMS) in combination with * the driver based on JDBCTM technology * ("JDBC driver") that is used with it. Different relational DBMSs often support * different features, implement features in different ways, and use different * data types. In addition, a driver may implement a feature on top of what the * DBMS offers. Information returned by methods in this interface applies * to the capabilities of a particular driver and a particular DBMS working * together. Note that as used in this documentation, the term "database" is * used generically to refer to both the driver and DBMS. *

* A user for this interface is commonly a tool that needs to discover how to * deal with the underlying DBMS. This is especially true for applications * that are intended to be used with more than one DBMS. For example, a tool might use the method * getTypeInfo to find out what data types can be used in a * CREATE TABLE statement. Or a user might call the method * supportsCorrelatedSubqueries to see if it is possible to use * a correlated subquery or supportsBatchUpdates to see if it is * possible to use batch updates. *

* Some DatabaseMetaData methods return lists of information * in the form of ResultSet objects. * Regular ResultSet methods, such as * getString and getInt, can be used * to retrieve the data from these ResultSet objects. If * a given form of metadata is not available, the ResultSet * getter methods throw an SQLException. *

* Some DatabaseMetaData methods take arguments that are * String patterns. These arguments all have names such as fooPattern. * Within a pattern String, "%" means match any substring of 0 or more * characters, and "_" means match any one character. Only metadata * entries matching the search pattern are returned. If a search pattern * argument is set to null, that argument's criterion will * be dropped from the search. *

* A method that gets information about a feature that the driver does not * support will throw an SQLException. * In the case of methods that return a ResultSet * object, either a ResultSet object (which may be empty) is * returned or an SQLException is thrown. */ public interface DatabaseMetaData { //---------------------------------------------------------------------- // First, a variety of minor information about the target database. /** * Retrieves whether the current user can call all the procedures * returned by the method getProcedures. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean allProceduresAreCallable() throws SQLException; /** * Retrieves whether the current user can use all the tables returned * by the method getTables in a SELECT * statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean allTablesAreSelectable() throws SQLException; /** * Retrieves the URL for this DBMS. * * @return the URL for this DBMS or null if it cannot be * generated * @exception SQLException if a database access error occurs */ String getURL() throws SQLException; /** * Retrieves the user name as known to this database. * * @return the database user name * @exception SQLException if a database access error occurs */ String getUserName() throws SQLException; /** * Retrieves whether this database is in read-only mode. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean isReadOnly() throws SQLException; /** * Retrieves whether NULL values are sorted high. * Sorted high means that NULL values * sort higher than any other value in a domain. In an ascending order, * if this method returns true, NULL values * will appear at the end. By contrast, the method * nullsAreSortedAtEnd indicates whether NULL values * are sorted at the end regardless of sort order. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean nullsAreSortedHigh() throws SQLException; /** * Retrieves whether NULL values are sorted low. * Sorted low means that NULL values * sort lower than any other value in a domain. In an ascending order, * if this method returns true, NULL values * will appear at the beginning. By contrast, the method * nullsAreSortedAtStart indicates whether NULL values * are sorted at the beginning regardless of sort order. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean nullsAreSortedLow() throws SQLException; /** * Retrieves whether NULL values are sorted at the start regardless * of sort order. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean nullsAreSortedAtStart() throws SQLException; /** * Retrieves whether NULL values are sorted at the end regardless of * sort order. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean nullsAreSortedAtEnd() throws SQLException; /** * Retrieves the name of this database product. * * @return database product name * @exception SQLException if a database access error occurs */ String getDatabaseProductName() throws SQLException; /** * Retrieves the version number of this database product. * * @return database version number * @exception SQLException if a database access error occurs */ String getDatabaseProductVersion() throws SQLException; /** * Retrieves the name of this JDBC driver. * * @return JDBC driver name * @exception SQLException if a database access error occurs */ String getDriverName() throws SQLException; /** * Retrieves the version number of this JDBC driver as a String. * * @return JDBC driver version * @exception SQLException if a database access error occurs */ String getDriverVersion() throws SQLException; /** * Retrieves this JDBC driver's major version number. * * @return JDBC driver major version */ int getDriverMajorVersion(); /** * Retrieves this JDBC driver's minor version number. * * @return JDBC driver minor version number */ int getDriverMinorVersion(); /** * Retrieves whether this database stores tables in a local file. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean usesLocalFiles() throws SQLException; /** * Retrieves whether this database uses a file for each table. * * @return true if this database uses a local file for each table; * false otherwise * @exception SQLException if a database access error occurs */ boolean usesLocalFilePerTable() throws SQLException; /** * Retrieves whether this database treats mixed case unquoted SQL identifiers as * case sensitive and as a result stores them in mixed case. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsMixedCaseIdentifiers() throws SQLException; /** * Retrieves whether this database treats mixed case unquoted SQL identifiers as * case insensitive and stores them in upper case. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean storesUpperCaseIdentifiers() throws SQLException; /** * Retrieves whether this database treats mixed case unquoted SQL identifiers as * case insensitive and stores them in lower case. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean storesLowerCaseIdentifiers() throws SQLException; /** * Retrieves whether this database treats mixed case unquoted SQL identifiers as * case insensitive and stores them in mixed case. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean storesMixedCaseIdentifiers() throws SQLException; /** * Retrieves whether this database treats mixed case quoted SQL identifiers as * case sensitive and as a result stores them in mixed case. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsMixedCaseQuotedIdentifiers() throws SQLException; /** * Retrieves whether this database treats mixed case quoted SQL identifiers as * case insensitive and stores them in upper case. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean storesUpperCaseQuotedIdentifiers() throws SQLException; /** * Retrieves whether this database treats mixed case quoted SQL identifiers as * case insensitive and stores them in lower case. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean storesLowerCaseQuotedIdentifiers() throws SQLException; /** * Retrieves whether this database treats mixed case quoted SQL identifiers as * case insensitive and stores them in mixed case. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean storesMixedCaseQuotedIdentifiers() throws SQLException; /** * Retrieves the string used to quote SQL identifiers. * This method returns a space " " if identifier quoting is not supported. * * @return the quoting string or a space if quoting is not supported * @exception SQLException if a database access error occurs */ String getIdentifierQuoteString() throws SQLException; /** * Retrieves a comma-separated list of all of this database's SQL keywords * that are NOT also SQL92 keywords. * * @return the list of this database's keywords that are not also * SQL92 keywords * @exception SQLException if a database access error occurs */ String getSQLKeywords() throws SQLException; /** * Retrieves a comma-separated list of math functions available with * this database. These are the Open /Open CLI math function names used in * the JDBC function escape clause. * * @return the list of math functions supported by this database * @exception SQLException if a database access error occurs */ String getNumericFunctions() throws SQLException; /** * Retrieves a comma-separated list of string functions available with * this database. These are the Open Group CLI string function names used * in the JDBC function escape clause. * * @return the list of string functions supported by this database * @exception SQLException if a database access error occurs */ String getStringFunctions() throws SQLException; /** * Retrieves a comma-separated list of system functions available with * this database. These are the Open Group CLI system function names used * in the JDBC function escape clause. * * @return a list of system functions supported by this database * @exception SQLException if a database access error occurs */ String getSystemFunctions() throws SQLException; /** * Retrieves a comma-separated list of the time and date functions available * with this database. * * @return the list of time and date functions supported by this database * @exception SQLException if a database access error occurs */ String getTimeDateFunctions() throws SQLException; /** * Retrieves the string that can be used to escape wildcard characters. * This is the string that can be used to escape '_' or '%' in * the catalog search parameters that are a pattern (and therefore use one * of the wildcard characters). * *

The '_' character represents any single character; * the '%' character represents any sequence of zero or * more characters. * * @return the string used to escape wildcard characters * @exception SQLException if a database access error occurs */ String getSearchStringEscape() throws SQLException; /** * Retrieves all the "extra" characters that can be used in unquoted * identifier names (those beyond a-z, A-Z, 0-9 and _). * * @return the string containing the extra characters * @exception SQLException if a database access error occurs */ String getExtraNameCharacters() throws SQLException; //-------------------------------------------------------------------- // Functions describing which features are supported. /** * Retrieves whether this database supports ALTER TABLE * with add column. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsAlterTableWithAddColumn() throws SQLException; /** * Retrieves whether this database supports ALTER TABLE * with drop column. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsAlterTableWithDropColumn() throws SQLException; /** * Retrieves whether this database supports column aliasing. * *

If so, the SQL AS clause can be used to provide names for * computed columns or to provide alias names for columns as * required. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsColumnAliasing() throws SQLException; /** * Retrieves whether this database supports concatenations between * NULL and non-NULL values being * NULL. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean nullPlusNonNullIsNull() throws SQLException; /** * Retrieves whether this database supports the CONVERT * function between SQL types. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsConvert() throws SQLException; /** * Retrieves whether this database supports the CONVERT * for two given SQL types. * * @param fromType the type to convert from; one of the type codes from * the class java.sql.Types * @param toType the type to convert to; one of the type codes from * the class java.sql.Types * @return true if so; false otherwise * @exception SQLException if a database access error occurs * @see Types */ boolean supportsConvert(int fromType, int toType) throws SQLException; /** * Retrieves whether this database supports table correlation names. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsTableCorrelationNames() throws SQLException; /** * Retrieves whether, when table correlation names are supported, they * are restricted to being different from the names of the tables. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsDifferentTableCorrelationNames() throws SQLException; /** * Retrieves whether this database supports expressions in * ORDER BY lists. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsExpressionsInOrderBy() throws SQLException; /** * Retrieves whether this database supports using a column that is * not in the SELECT statement in an * ORDER BY clause. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsOrderByUnrelated() throws SQLException; /** * Retrieves whether this database supports some form of * GROUP BY clause. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsGroupBy() throws SQLException; /** * Retrieves whether this database supports using a column that is * not in the SELECT statement in a * GROUP BY clause. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsGroupByUnrelated() throws SQLException; /** * Retrieves whether this database supports using columns not included in * the SELECT statement in a GROUP BY clause * provided that all of the columns in the SELECT statement * are included in the GROUP BY clause. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsGroupByBeyondSelect() throws SQLException; /** * Retrieves whether this database supports specifying a * LIKE escape clause. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsLikeEscapeClause() throws SQLException; /** * Retrieves whether this database supports getting multiple * ResultSet objects from a single call to the * method execute. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsMultipleResultSets() throws SQLException; /** * Retrieves whether this database allows having multiple * transactions open at once (on different connections). * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsMultipleTransactions() throws SQLException; /** * Retrieves whether columns in this database may be defined as non-nullable. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsNonNullableColumns() throws SQLException; /** * Retrieves whether this database supports the ODBC Minimum SQL grammar. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsMinimumSQLGrammar() throws SQLException; /** * Retrieves whether this database supports the ODBC Core SQL grammar. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsCoreSQLGrammar() throws SQLException; /** * Retrieves whether this database supports the ODBC Extended SQL grammar. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsExtendedSQLGrammar() throws SQLException; /** * Retrieves whether this database supports the ANSI92 entry level SQL * grammar. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsANSI92EntryLevelSQL() throws SQLException; /** * Retrieves whether this database supports the ANSI92 intermediate SQL grammar supported. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsANSI92IntermediateSQL() throws SQLException; /** * Retrieves whether this database supports the ANSI92 full SQL grammar supported. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsANSI92FullSQL() throws SQLException; /** * Retrieves whether this database supports the SQL Integrity * Enhancement Facility. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsIntegrityEnhancementFacility() throws SQLException; /** * Retrieves whether this database supports some form of outer join. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsOuterJoins() throws SQLException; /** * Retrieves whether this database supports full nested outer joins. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsFullOuterJoins() throws SQLException; /** * Retrieves whether this database provides limited support for outer * joins. (This will be true if the method * supportsFullOuterJoins returns true). * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsLimitedOuterJoins() throws SQLException; /** * Retrieves the database vendor's preferred term for "schema". * * @return the vendor term for "schema" * @exception SQLException if a database access error occurs */ String getSchemaTerm() throws SQLException; /** * Retrieves the database vendor's preferred term for "procedure". * * @return the vendor term for "procedure" * @exception SQLException if a database access error occurs */ String getProcedureTerm() throws SQLException; /** * Retrieves the database vendor's preferred term for "catalog". * * @return the vendor term for "catalog" * @exception SQLException if a database access error occurs */ String getCatalogTerm() throws SQLException; /** * Retrieves whether a catalog appears at the start of a fully qualified * table name. If not, the catalog appears at the end. * * @return true if the catalog name appears at the beginning * of a fully qualified table name; false otherwise * @exception SQLException if a database access error occurs */ boolean isCatalogAtStart() throws SQLException; /** * Retrieves the String that this database uses as the * separator between a catalog and table name. * * @return the separator string * @exception SQLException if a database access error occurs */ String getCatalogSeparator() throws SQLException; /** * Retrieves whether a schema name can be used in a data manipulation statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSchemasInDataManipulation() throws SQLException; /** * Retrieves whether a schema name can be used in a procedure call statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSchemasInProcedureCalls() throws SQLException; /** * Retrieves whether a schema name can be used in a table definition statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSchemasInTableDefinitions() throws SQLException; /** * Retrieves whether a schema name can be used in an index definition statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSchemasInIndexDefinitions() throws SQLException; /** * Retrieves whether a schema name can be used in a privilege definition statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSchemasInPrivilegeDefinitions() throws SQLException; /** * Retrieves whether a catalog name can be used in a data manipulation statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsCatalogsInDataManipulation() throws SQLException; /** * Retrieves whether a catalog name can be used in a procedure call statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsCatalogsInProcedureCalls() throws SQLException; /** * Retrieves whether a catalog name can be used in a table definition statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsCatalogsInTableDefinitions() throws SQLException; /** * Retrieves whether a catalog name can be used in an index definition statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsCatalogsInIndexDefinitions() throws SQLException; /** * Retrieves whether a catalog name can be used in a privilege definition statement. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException; /** * Retrieves whether this database supports positioned DELETE * statements. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsPositionedDelete() throws SQLException; /** * Retrieves whether this database supports positioned UPDATE * statements. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsPositionedUpdate() throws SQLException; /** * Retrieves whether this database supports SELECT FOR UPDATE * statements. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSelectForUpdate() throws SQLException; /** * Retrieves whether this database supports stored procedure calls * that use the stored procedure escape syntax. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsStoredProcedures() throws SQLException; /** * Retrieves whether this database supports subqueries in comparison * expressions. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSubqueriesInComparisons() throws SQLException; /** * Retrieves whether this database supports subqueries in * EXISTS expressions. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSubqueriesInExists() throws SQLException; /** * Retrieves whether this database supports subqueries in * IN statements. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSubqueriesInIns() throws SQLException; /** * Retrieves whether this database supports subqueries in quantified * expressions. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsSubqueriesInQuantifieds() throws SQLException; /** * Retrieves whether this database supports correlated subqueries. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsCorrelatedSubqueries() throws SQLException; /** * Retrieves whether this database supports SQL UNION. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsUnion() throws SQLException; /** * Retrieves whether this database supports SQL UNION ALL. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsUnionAll() throws SQLException; /** * Retrieves whether this database supports keeping cursors open * across commits. * * @return true if cursors always remain open; * false if they might not remain open * @exception SQLException if a database access error occurs */ boolean supportsOpenCursorsAcrossCommit() throws SQLException; /** * Retrieves whether this database supports keeping cursors open * across rollbacks. * * @return true if cursors always remain open; * false if they might not remain open * @exception SQLException if a database access error occurs */ boolean supportsOpenCursorsAcrossRollback() throws SQLException; /** * Retrieves whether this database supports keeping statements open * across commits. * * @return true if statements always remain open; * false if they might not remain open * @exception SQLException if a database access error occurs */ boolean supportsOpenStatementsAcrossCommit() throws SQLException; /** * Retrieves whether this database supports keeping statements open * across rollbacks. * * @return true if statements always remain open; * false if they might not remain open * @exception SQLException if a database access error occurs */ boolean supportsOpenStatementsAcrossRollback() throws SQLException; //---------------------------------------------------------------------- // The following group of methods exposes various limitations // based on the target database with the current driver. // Unless otherwise specified, a result of zero means there is no // limit, or the limit is not known. /** * Retrieves the maximum number of hex characters this database allows in an * inline binary literal. * * @return max the maximum length (in hex characters) for a binary literal; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxBinaryLiteralLength() throws SQLException; /** * Retrieves the maximum number of characters this database allows * for a character literal. * * @return the maximum number of characters allowed for a character literal; * a result of zero means that there is no limit or the limit is * not known * @exception SQLException if a database access error occurs */ int getMaxCharLiteralLength() throws SQLException; /** * Retrieves the maximum number of characters this database allows * for a column name. * * @return the maximum number of characters allowed for a column name; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxColumnNameLength() throws SQLException; /** * Retrieves the maximum number of columns this database allows in a * GROUP BY clause. * * @return the maximum number of columns allowed; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxColumnsInGroupBy() throws SQLException; /** * Retrieves the maximum number of columns this database allows in an index. * * @return the maximum number of columns allowed; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxColumnsInIndex() throws SQLException; /** * Retrieves the maximum number of columns this database allows in an * ORDER BY clause. * * @return the maximum number of columns allowed; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxColumnsInOrderBy() throws SQLException; /** * Retrieves the maximum number of columns this database allows in a * SELECT list. * * @return the maximum number of columns allowed; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxColumnsInSelect() throws SQLException; /** * Retrieves the maximum number of columns this database allows in a table. * * @return the maximum number of columns allowed; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxColumnsInTable() throws SQLException; /** * Retrieves the maximum number of concurrent connections to this * database that are possible. * * @return the maximum number of active connections possible at one time; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxConnections() throws SQLException; /** * Retrieves the maximum number of characters that this database allows in a * cursor name. * * @return the maximum number of characters allowed in a cursor name; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxCursorNameLength() throws SQLException; /** * Retrieves the maximum number of bytes this database allows for an * index, including all of the parts of the index. * * @return the maximum number of bytes allowed; this limit includes the * composite of all the constituent parts of the index; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxIndexLength() throws SQLException; /** * Retrieves the maximum number of characters that this database allows in a * schema name. * * @return the maximum number of characters allowed in a schema name; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxSchemaNameLength() throws SQLException; /** * Retrieves the maximum number of characters that this database allows in a * procedure name. * * @return the maximum number of characters allowed in a procedure name; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxProcedureNameLength() throws SQLException; /** * Retrieves the maximum number of characters that this database allows in a * catalog name. * * @return the maximum number of characters allowed in a catalog name; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxCatalogNameLength() throws SQLException; /** * Retrieves the maximum number of bytes this database allows in * a single row. * * @return the maximum number of bytes allowed for a row; a result of * zero means that there is no limit or the limit is not known * @exception SQLException if a database access error occurs */ int getMaxRowSize() throws SQLException; /** * Retrieves whether the return value for the method * getMaxRowSize includes the SQL data types * LONGVARCHAR and LONGVARBINARY. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean doesMaxRowSizeIncludeBlobs() throws SQLException; /** * Retrieves the maximum number of characters this database allows in * an SQL statement. * * @return the maximum number of characters allowed for an SQL statement; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxStatementLength() throws SQLException; /** * Retrieves the maximum number of active statements to this database * that can be open at the same time. * * @return the maximum number of statements that can be open at one time; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxStatements() throws SQLException; /** * Retrieves the maximum number of characters this database allows in * a table name. * * @return the maximum number of characters allowed for a table name; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxTableNameLength() throws SQLException; /** * Retrieves the maximum number of tables this database allows in a * SELECT statement. * * @return the maximum number of tables allowed in a SELECT * statement; a result of zero means that there is no limit or * the limit is not known * @exception SQLException if a database access error occurs */ int getMaxTablesInSelect() throws SQLException; /** * Retrieves the maximum number of characters this database allows in * a user name. * * @return the maximum number of characters allowed for a user name; * a result of zero means that there is no limit or the limit * is not known * @exception SQLException if a database access error occurs */ int getMaxUserNameLength() throws SQLException; //---------------------------------------------------------------------- /** * Retrieves this database's default transaction isolation level. The * possible values are defined in java.sql.Connection. * * @return the default isolation level * @exception SQLException if a database access error occurs * @see Connection */ int getDefaultTransactionIsolation() throws SQLException; /** * Retrieves whether this database supports transactions. If not, invoking the * method commit is a noop, and the isolation level is * TRANSACTION_NONE. * * @return true if transactions are supported; * false otherwise * @exception SQLException if a database access error occurs */ boolean supportsTransactions() throws SQLException; /** * Retrieves whether this database supports the given transaction isolation level. * * @param level one of the transaction isolation levels defined in * java.sql.Connection * @return true if so; false otherwise * @exception SQLException if a database access error occurs * @see Connection */ boolean supportsTransactionIsolationLevel(int level) throws SQLException; /** * Retrieves whether this database supports both data definition and * data manipulation statements within a transaction. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException; /** * Retrieves whether this database supports only data manipulation * statements within a transaction. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean supportsDataManipulationTransactionsOnly() throws SQLException; /** * Retrieves whether a data definition statement within a transaction forces * the transaction to commit. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean dataDefinitionCausesTransactionCommit() throws SQLException; /** * Retrieves whether this database ignores a data definition statement * within a transaction. * * @return true if so; false otherwise * @exception SQLException if a database access error occurs */ boolean dataDefinitionIgnoredInTransactions() throws SQLException; /** * Retrieves a description of the stored procedures available in the given * catalog. *

* Only procedure descriptions matching the schema and * procedure name criteria are returned. They are ordered by * PROCEDURE_SCHEM and PROCEDURE_NAME. * *

Each procedure description has the the following columns: *

    *
  1. PROCEDURE_CAT String => procedure catalog (may be null) *
  2. PROCEDURE_SCHEM String => procedure schema (may be null) *
  3. PROCEDURE_NAME String => procedure name *
  4. reserved for future use *
  5. reserved for future use *
  6. reserved for future use *
  7. REMARKS String => explanatory comment on the procedure *
  8. PROCEDURE_TYPE short => kind of procedure: * *
* * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schemaPattern a schema name pattern; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param procedureNamePattern a procedure name pattern; must match the * procedure name as it is stored in the database * @return ResultSet - each row is a procedure description * @exception SQLException if a database access error occurs * @see #getSearchStringEscape */ ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) throws SQLException; /** * Indicates that it is not known whether the procedure returns * a result. *

* A possible value for column PROCEDURE_TYPE in the * ResultSet object returned by the method * getProcedures. */ int procedureResultUnknown = 0; /** * Indicates that the procedure does not return a result. *

* A possible value for column PROCEDURE_TYPE in the * ResultSet object returned by the method * getProcedures. */ int procedureNoResult = 1; /** * Indicates that the procedure returns a result. *

* A possible value for column PROCEDURE_TYPE in the * ResultSet object returned by the method * getProcedures. */ int procedureReturnsResult = 2; /** * Retrieves a description of the given catalog's stored procedure parameter * and result columns. * *

Only descriptions matching the schema, procedure and * parameter name criteria are returned. They are ordered by * PROCEDURE_SCHEM and PROCEDURE_NAME. Within this, the return value, * if any, is first. Next are the parameter descriptions in call * order. The column descriptions follow in column number order. * *

Each row in the ResultSet is a parameter description or * column description with the following fields: *

    *
  1. PROCEDURE_CAT String => procedure catalog (may be null) *
  2. PROCEDURE_SCHEM String => procedure schema (may be null) *
  3. PROCEDURE_NAME String => procedure name *
  4. COLUMN_NAME String => column/parameter name *
  5. COLUMN_TYPE Short => kind of column/parameter: * *
  6. DATA_TYPE int => SQL type from java.sql.Types *
  7. TYPE_NAME String => SQL type name, for a UDT type the * type name is fully qualified *
  8. PRECISION int => precision *
  9. LENGTH int => length in bytes of data *
  10. SCALE short => scale *
  11. RADIX short => radix *
  12. NULLABLE short => can it contain NULL. * *
  13. REMARKS String => comment describing parameter/column *
* *

Note: Some databases may not return the column * descriptions for a procedure. Additional columns beyond * REMARKS can be defined by the database. * * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schemaPattern a schema name pattern; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param procedureNamePattern a procedure name pattern; must match the * procedure name as it is stored in the database * @param columnNamePattern a column name pattern; must match the column name * as it is stored in the database * @return ResultSet - each row describes a stored procedure parameter or * column * @exception SQLException if a database access error occurs * @see #getSearchStringEscape */ ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) throws SQLException; /** * Indicates that type of the column is unknown. *

* A possible value for the column * COLUMN_TYPE * in the ResultSet * returned by the method getProcedureColumns. */ int procedureColumnUnknown = 0; /** * Indicates that the column stores IN parameters. *

* A possible value for the column * COLUMN_TYPE * in the ResultSet * returned by the method getProcedureColumns. */ int procedureColumnIn = 1; /** * Indicates that the column stores INOUT parameters. *

* A possible value for the column * COLUMN_TYPE * in the ResultSet * returned by the method getProcedureColumns. */ int procedureColumnInOut = 2; /** * Indicates that the column stores OUT parameters. *

* A possible value for the column * COLUMN_TYPE * in the ResultSet * returned by the method getProcedureColumns. */ int procedureColumnOut = 4; /** * Indicates that the column stores return values. *

* A possible value for the column * COLUMN_TYPE * in the ResultSet * returned by the method getProcedureColumns. */ int procedureColumnReturn = 5; /** * Indicates that the column stores results. *

* A possible value for the column * COLUMN_TYPE * in the ResultSet * returned by the method getProcedureColumns. */ int procedureColumnResult = 3; /** * Indicates that NULL values are not allowed. *

* A possible value for the column * NULLABLE * in the ResultSet object * returned by the method getProcedureColumns. */ int procedureNoNulls = 0; /** * Indicates that NULL values are allowed. *

* A possible value for the column * NULLABLE * in the ResultSet object * returned by the method getProcedureColumns. */ int procedureNullable = 1; /** * Indicates that whether NULL values are allowed * is unknown. *

* A possible value for the column * NULLABLE * in the ResultSet object * returned by the method getProcedureColumns. */ int procedureNullableUnknown = 2; /** * Retrieves a description of the tables available in the given catalog. * Only table descriptions matching the catalog, schema, table * name and type criteria are returned. They are ordered by * TABLE_TYPE, TABLE_SCHEM and TABLE_NAME. *

* Each table description has the following columns: *

    *
  1. TABLE_CAT String => table catalog (may be null) *
  2. TABLE_SCHEM String => table schema (may be null) *
  3. TABLE_NAME String => table name *
  4. TABLE_TYPE String => table type. Typical types are "TABLE", * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", * "LOCAL TEMPORARY", "ALIAS", "SYNONYM". *
  5. REMARKS String => explanatory comment on the table *
  6. TYPE_CAT String => the types catalog (may be null) *
  7. TYPE_SCHEM String => the types schema (may be null) *
  8. TYPE_NAME String => type name (may be null) *
  9. SELF_REFERENCING_COL_NAME String => name of the designated * "identifier" column of a typed table (may be null) *
  10. REF_GENERATION String => specifies how values in * SELF_REFERENCING_COL_NAME are created. Values are * "SYSTEM", "USER", "DERIVED". (may be null) *
* *

Note: Some databases may not return information for * all tables. * * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schemaPattern a schema name pattern; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param tableNamePattern a table name pattern; must match the * table name as it is stored in the database * @param types a list of table types to include; null returns all types * @return ResultSet - each row is a table description * @exception SQLException if a database access error occurs * @see #getSearchStringEscape */ ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String types[]) throws SQLException; /** * Retrieves the schema names available in this database. The results * are ordered by schema name. * *

The schema column is: *

    *
  1. TABLE_SCHEM String => schema name *
  2. TABLE_CATALOG String => catalog name (may be null) *
* * @return a ResultSet object in which each row is a * schema decription * @exception SQLException if a database access error occurs */ ResultSet getSchemas() throws SQLException; /** * Retrieves the catalog names available in this database. The results * are ordered by catalog name. * *

The catalog column is: *

    *
  1. TABLE_CAT String => catalog name *
* * @return a ResultSet object in which each row has a * single String column that is a catalog name * @exception SQLException if a database access error occurs */ ResultSet getCatalogs() throws SQLException; /** * Retrieves the table types available in this database. The results * are ordered by table type. * *

The table type is: *

    *
  1. TABLE_TYPE String => table type. Typical types are "TABLE", * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", * "LOCAL TEMPORARY", "ALIAS", "SYNONYM". *
* * @return a ResultSet object in which each row has a * single String column that is a table type * @exception SQLException if a database access error occurs */ ResultSet getTableTypes() throws SQLException; /** * Retrieves a description of table columns available in * the specified catalog. * *

Only column descriptions matching the catalog, schema, table * and column name criteria are returned. They are ordered by * TABLE_SCHEM, TABLE_NAME, and * ORDINAL_POSITION. * *

Each column description has the following columns: *

    *
  1. TABLE_CAT String => table catalog (may be null) *
  2. TABLE_SCHEM String => table schema (may be null) *
  3. TABLE_NAME String => table name *
  4. COLUMN_NAME String => column name *
  5. DATA_TYPE int => SQL type from java.sql.Types *
  6. TYPE_NAME String => Data source dependent type name, * for a UDT the type name is fully qualified *
  7. COLUMN_SIZE int => column size. For char or date * types this is the maximum number of characters, for numeric or * decimal types this is precision. *
  8. BUFFER_LENGTH is not used. *
  9. DECIMAL_DIGITS int => the number of fractional digits *
  10. NUM_PREC_RADIX int => Radix (typically either 10 or 2) *
  11. NULLABLE int => is NULL allowed. * *
  12. REMARKS String => comment describing column (may be null) *
  13. COLUMN_DEF String => default value (may be null) *
  14. SQL_DATA_TYPE int => unused *
  15. SQL_DATETIME_SUB int => unused *
  16. CHAR_OCTET_LENGTH int => for char types the * maximum number of bytes in the column *
  17. ORDINAL_POSITION int => index of column in table * (starting at 1) *
  18. IS_NULLABLE String => "NO" means column definitely * does not allow NULL values; "YES" means the column might * allow NULL values. An empty string means nobody knows. *
  19. SCOPE_CATLOG String => catalog of table that is the scope * of a reference attribute (null if DATA_TYPE isn't REF) *
  20. SCOPE_SCHEMA String => schema of table that is the scope * of a reference attribute (null if the DATA_TYPE isn't REF) *
  21. SCOPE_TABLE String => table name that this the scope * of a reference attribure (null if the DATA_TYPE isn't REF) *
  22. SOURCE_DATA_TYPE short => source type of a distinct type or user-generated * Ref type, SQL type from java.sql.Types (null if DATA_TYPE * isn't DISTINCT or user-generated REF) *
* * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schemaPattern a schema name pattern; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param tableNamePattern a table name pattern; must match the * table name as it is stored in the database * @param columnNamePattern a column name pattern; must match the column * name as it is stored in the database * @return ResultSet - each row is a column description * @exception SQLException if a database access error occurs * @see #getSearchStringEscape */ ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException; /** * Indicates that the column might not allow NULL values. *

* A possible value for the column * NULLABLE * in the ResultSet returned by the method * getColumns. */ int columnNoNulls = 0; /** * Indicates that the column definitely allows NULL values. *

* A possible value for the column * NULLABLE * in the ResultSet returned by the method * getColumns. */ int columnNullable = 1; /** * Indicates that the nullability of columns is unknown. *

* A possible value for the column * NULLABLE * in the ResultSet returned by the method * getColumns. */ int columnNullableUnknown = 2; /** * Retrieves a description of the access rights for a table's columns. * *

Only privileges matching the column name criteria are * returned. They are ordered by COLUMN_NAME and PRIVILEGE. * *

Each privilige description has the following columns: *

    *
  1. TABLE_CAT String => table catalog (may be null) *
  2. TABLE_SCHEM String => table schema (may be null) *
  3. TABLE_NAME String => table name *
  4. COLUMN_NAME String => column name *
  5. GRANTOR => grantor of access (may be null) *
  6. GRANTEE String => grantee of access *
  7. PRIVILEGE String => name of access (SELECT, * INSERT, UPDATE, REFRENCES, ...) *
  8. IS_GRANTABLE String => "YES" if grantee is permitted * to grant to others; "NO" if not; null if unknown *
* * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schema a schema name; must match the schema name as it is * stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param table a table name; must match the table name as it is * stored in the database * @param columnNamePattern a column name pattern; must match the column * name as it is stored in the database * @return ResultSet - each row is a column privilege description * @exception SQLException if a database access error occurs * @see #getSearchStringEscape */ ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) throws SQLException; /** * Retrieves a description of the access rights for each table available * in a catalog. Note that a table privilege applies to one or * more columns in the table. It would be wrong to assume that * this privilege applies to all columns (this may be true for * some systems but is not true for all.) * *

Only privileges matching the schema and table name * criteria are returned. They are ordered by TABLE_SCHEM, * TABLE_NAME, and PRIVILEGE. * *

Each privilige description has the following columns: *

    *
  1. TABLE_CAT String => table catalog (may be null) *
  2. TABLE_SCHEM String => table schema (may be null) *
  3. TABLE_NAME String => table name *
  4. GRANTOR => grantor of access (may be null) *
  5. GRANTEE String => grantee of access *
  6. PRIVILEGE String => name of access (SELECT, * INSERT, UPDATE, REFRENCES, ...) *
  7. IS_GRANTABLE String => "YES" if grantee is permitted * to grant to others; "NO" if not; null if unknown *
* * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schemaPattern a schema name pattern; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param tableNamePattern a table name pattern; must match the * table name as it is stored in the database * @return ResultSet - each row is a table privilege description * @exception SQLException if a database access error occurs * @see #getSearchStringEscape */ ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) throws SQLException; /** * Retrieves a description of a table's optimal set of columns that * uniquely identifies a row. They are ordered by SCOPE. * *

Each column description has the following columns: *

    *
  1. SCOPE short => actual scope of result * *
  2. COLUMN_NAME String => column name *
  3. DATA_TYPE int => SQL data type from java.sql.Types *
  4. TYPE_NAME String => Data source dependent type name, * for a UDT the type name is fully qualified *
  5. COLUMN_SIZE int => precision *
  6. BUFFER_LENGTH int => not used *
  7. DECIMAL_DIGITS short => scale *
  8. PSEUDO_COLUMN short => is this a pseudo column * like an Oracle ROWID * *
* * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schema a schema name; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param table a table name; must match the table name as it is stored * in the database * @param scope the scope of interest; use same values as SCOPE * @param nullable include columns that are nullable. * @return ResultSet - each row is a column description * @exception SQLException if a database access error occurs */ ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) throws SQLException; /** * Indicates that the scope of the best row identifier is * very temporary, lasting only while the * row is being used. *

* A possible value for the column * SCOPE * in the ResultSet object * returned by the method getBestRowIdentifier. */ int bestRowTemporary = 0; /** * Indicates that the scope of the best row identifier is * the remainder of the current transaction. *

* A possible value for the column * SCOPE * in the ResultSet object * returned by the method getBestRowIdentifier. */ int bestRowTransaction = 1; /** * Indicates that the scope of the best row identifier is * the remainder of the current session. *

* A possible value for the column * SCOPE * in the ResultSet object * returned by the method getBestRowIdentifier. */ int bestRowSession = 2; /** * Indicates that the best row identifier may or may not be a pseudo column. *

* A possible value for the column * PSEUDO_COLUMN * in the ResultSet object * returned by the method getBestRowIdentifier. */ int bestRowUnknown = 0; /** * Indicates that the best row identifier is NOT a pseudo column. *

* A possible value for the column * PSEUDO_COLUMN * in the ResultSet object * returned by the method getBestRowIdentifier. */ int bestRowNotPseudo = 1; /** * Indicates that the best row identifier is a pseudo column. *

* A possible value for the column * PSEUDO_COLUMN * in the ResultSet object * returned by the method getBestRowIdentifier. */ int bestRowPseudo = 2; /** * Retrieves a description of a table's columns that are automatically * updated when any value in a row is updated. They are * unordered. * *

Each column description has the following columns: *

    *
  1. SCOPE short => is not used *
  2. COLUMN_NAME String => column name *
  3. DATA_TYPE int => SQL data type from java.sql.Types *
  4. TYPE_NAME String => Data source-dependent type name *
  5. COLUMN_SIZE int => precision *
  6. BUFFER_LENGTH int => length of column value in bytes *
  7. DECIMAL_DIGITS short => scale *
  8. PSEUDO_COLUMN short => whether this is pseudo column * like an Oracle ROWID * *
* * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schema a schema name; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param table a table name; must match the table name as it is stored * in the database * @return a ResultSet object in which each row is a * column description * @exception SQLException if a database access error occurs */ ResultSet getVersionColumns(String catalog, String schema, String table) throws SQLException; /** * Indicates that this version column may or may not be a pseudo column. *

* A possible value for the column * PSEUDO_COLUMN * in the ResultSet object * returned by the method getVersionColumns. */ int versionColumnUnknown = 0; /** * Indicates that this version column is NOT a pseudo column. *

* A possible value for the column * PSEUDO_COLUMN * in the ResultSet object * returned by the method getVersionColumns. */ int versionColumnNotPseudo = 1; /** * Indicates that this version column is a pseudo column. *

* A possible value for the column * PSEUDO_COLUMN * in the ResultSet object * returned by the method getVersionColumns. */ int versionColumnPseudo = 2; /** * Retrieves a description of the given table's primary key columns. They * are ordered by COLUMN_NAME. * *

Each primary key column description has the following columns: *

    *
  1. TABLE_CAT String => table catalog (may be null) *
  2. TABLE_SCHEM String => table schema (may be null) *
  3. TABLE_NAME String => table name *
  4. COLUMN_NAME String => column name *
  5. KEY_SEQ short => sequence number within primary key *
  6. PK_NAME String => primary key name (may be null) *
* * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schema a schema name; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param table a table name; must match the table name as it is stored * in the database * @return ResultSet - each row is a primary key column description * @exception SQLException if a database access error occurs */ ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException; /** * Retrieves a description of the primary key columns that are * referenced by a table's foreign key columns (the primary keys * imported by a table). They are ordered by PKTABLE_CAT, * PKTABLE_SCHEM, PKTABLE_NAME, and KEY_SEQ. * *

Each primary key column description has the following columns: *

    *
  1. PKTABLE_CAT String => primary key table catalog * being imported (may be null) *
  2. PKTABLE_SCHEM String => primary key table schema * being imported (may be null) *
  3. PKTABLE_NAME String => primary key table name * being imported *
  4. PKCOLUMN_NAME String => primary key column name * being imported *
  5. FKTABLE_CAT String => foreign key table catalog (may be null) *
  6. FKTABLE_SCHEM String => foreign key table schema (may be null) *
  7. FKTABLE_NAME String => foreign key table name *
  8. FKCOLUMN_NAME String => foreign key column name *
  9. KEY_SEQ short => sequence number within a foreign key *
  10. UPDATE_RULE short => What happens to a * foreign key when the primary key is updated: * *
  11. DELETE_RULE short => What happens to * the foreign key when primary is deleted. * *
  12. FK_NAME String => foreign key name (may be null) *
  13. PK_NAME String => primary key name (may be null) *
  14. DEFERRABILITY short => can the evaluation of foreign key * constraints be deferred until commit * *
* * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schema a schema name; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param table a table name; must match the table name as it is stored * in the database * @return ResultSet - each row is a primary key column description * @exception SQLException if a database access error occurs * @see #getExportedKeys */ ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException; /** * For the column UPDATE_RULE, * indicates that * when the primary key is updated, the foreign key (imported key) * is changed to agree with it. * For the column DELETE_RULE, * it indicates that * when the primary key is deleted, rows that imported that key * are deleted. *

* A possible value for the columns UPDATE_RULE * and DELETE_RULE in the * ResultSet objects returned by the methods * getImportedKeys, getExportedKeys, * and getCrossReference. */ int importedKeyCascade = 0; /** * For the column UPDATE_RULE, indicates that * a primary key may not be updated if it has been imported by * another table as a foreign key. * For the column DELETE_RULE, indicates that * a primary key may not be deleted if it has been imported by * another table as a foreign key. *

* A possible value for the columns UPDATE_RULE * and DELETE_RULE in the * ResultSet objects returned by the methods * getImportedKeys, getExportedKeys, * and getCrossReference. */ int importedKeyRestrict = 1; /** * For the columns UPDATE_RULE * and DELETE_RULE, indicates that * when the primary key is updated or deleted, the foreign key (imported key) * is changed to NULL. *

* A possible value for the columns UPDATE_RULE * and DELETE_RULE in the * ResultSet objects returned by the methods * getImportedKeys, getExportedKeys, * and getCrossReference. */ int importedKeySetNull = 2; /** * For the columns UPDATE_RULE * and DELETE_RULE, indicates that * if the primary key has been imported, it cannot be updated or deleted. *

* A possible value for the columns UPDATE_RULE * and DELETE_RULE in the * ResultSet objects returned by the methods * getImportedKeys, getExportedKeys, * and getCrossReference. */ int importedKeyNoAction = 3; /** * For the columns UPDATE_RULE * and DELETE_RULE, indicates that * if the primary key is updated or deleted, the foreign key (imported key) * is set to the default value. *

* A possible value for the columns UPDATE_RULE * and DELETE_RULE in the * ResultSet objects returned by the methods * getImportedKeys, getExportedKeys, * and getCrossReference. */ int importedKeySetDefault = 4; /** * Indicates deferrability. See SQL-92 for a definition. *

* A possible value for the column DEFERRABILITY * in the ResultSet objects returned by the methods * getImportedKeys, getExportedKeys, * and getCrossReference. */ int importedKeyInitiallyDeferred = 5; /** * Indicates deferrability. See SQL-92 for a definition. *

* A possible value for the column DEFERRABILITY * in the ResultSet objects returned by the methods * getImportedKeys, getExportedKeys, * and getCrossReference. */ int importedKeyInitiallyImmediate = 6; /** * Indicates deferrability. See SQL-92 for a definition. *

* A possible value for the column DEFERRABILITY * in the ResultSet objects returned by the methods * getImportedKeys, getExportedKeys, * and getCrossReference. */ int importedKeyNotDeferrable = 7; /** * Retrieves a description of the foreign key columns that reference the * given table's primary key columns (the foreign keys exported by a * table). They are ordered by FKTABLE_CAT, FKTABLE_SCHEM, * FKTABLE_NAME, and KEY_SEQ. * *

Each foreign key column description has the following columns: *

    *
  1. PKTABLE_CAT String => primary key table catalog (may be null) *
  2. PKTABLE_SCHEM String => primary key table schema (may be null) *
  3. PKTABLE_NAME String => primary key table name *
  4. PKCOLUMN_NAME String => primary key column name *
  5. FKTABLE_CAT String => foreign key table catalog (may be null) * being exported (may be null) *
  6. FKTABLE_SCHEM String => foreign key table schema (may be null) * being exported (may be null) *
  7. FKTABLE_NAME String => foreign key table name * being exported *
  8. FKCOLUMN_NAME String => foreign key column name * being exported *
  9. KEY_SEQ short => sequence number within foreign key *
  10. UPDATE_RULE short => What happens to * foreign key when primary is updated: * *
  11. DELETE_RULE short => What happens to * the foreign key when primary is deleted. * *
  12. FK_NAME String => foreign key name (may be null) *
  13. PK_NAME String => primary key name (may be null) *
  14. DEFERRABILITY short => can the evaluation of foreign key * constraints be deferred until commit * *
* * @param catalog a catalog name; must match the catalog name as it * is stored in this database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schema a schema name; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param table a table name; must match the table name as it is stored * in this database * @return a ResultSet object in which each row is a * foreign key column description * @exception SQLException if a database access error occurs * @see #getImportedKeys */ ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException; /** * Retrieves a description of the foreign key columns in the given foreign key * table that reference the primary key columns of the given primary key * table (describe how one table imports another's key). This * should normally return a single foreign key/primary key pair because * most tables import a foreign key from a table only once. They * are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and * KEY_SEQ. * *

Each foreign key column description has the following columns: *

    *
  1. PKTABLE_CAT String => primary key table catalog (may be null) *
  2. PKTABLE_SCHEM String => primary key table schema (may be null) *
  3. PKTABLE_NAME String => primary key table name *
  4. PKCOLUMN_NAME String => primary key column name *
  5. FKTABLE_CAT String => foreign key table catalog (may be null) * being exported (may be null) *
  6. FKTABLE_SCHEM String => foreign key table schema (may be null) * being exported (may be null) *
  7. FKTABLE_NAME String => foreign key table name * being exported *
  8. FKCOLUMN_NAME String => foreign key column name * being exported *
  9. KEY_SEQ short => sequence number within foreign key *
  10. UPDATE_RULE short => What happens to * foreign key when primary is updated: * *
  11. DELETE_RULE short => What happens to * the foreign key when primary is deleted. * *
  12. FK_NAME String => foreign key name (may be null) *
  13. PK_NAME String => primary key name (may be null) *
  14. DEFERRABILITY short => can the evaluation of foreign key * constraints be deferred until commit * *
* * @param primaryCatalog a catalog name; must match the catalog name * as it is stored in the database; "" retrieves those without a * catalog; null means drop catalog name from the selection criteria * @param primarySchema a schema name; must match the schema name as * it is stored in the database; "" retrieves those without a schema; * null means drop schema name from the selection criteria * @param primaryTable the name of the table that exports the key; must match * the table name as it is stored in the database * @param foreignCatalog a catalog name; must match the catalog name as * it is stored in the database; "" retrieves those without a * catalog; null means drop catalog name from the selection criteria * @param foreignSchema a schema name; must match the schema name as it * is stored in the database; "" retrieves those without a schema; * null means drop schema name from the selection criteria * @param foreignTable the name of the table that imports the key; must match * the table name as it is stored in the database * @return ResultSet - each row is a foreign key column description * @exception SQLException if a database access error occurs * @see #getImportedKeys */ ResultSet getCrossReference( String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable ) throws SQLException; /** * Retrieves a description of all the standard SQL types supported by * this database. They are ordered by DATA_TYPE and then by how * closely the data type maps to the corresponding JDBC SQL type. * *

Each type description has the following columns: *

    *
  1. TYPE_NAME String => Type name *
  2. DATA_TYPE int => SQL data type from java.sql.Types *
  3. PRECISION int => maximum precision *
  4. LITERAL_PREFIX String => prefix used to quote a literal * (may be null) *
  5. LITERAL_SUFFIX String => suffix used to quote a literal (may be null) *
  6. CREATE_PARAMS String => parameters used in creating * the type (may be null) *
  7. NULLABLE short => can you use NULL for this type. * *
  8. CASE_SENSITIVE boolean=> is it case sensitive. *
  9. SEARCHABLE short => can you use "WHERE" based on this type: * *
  10. UNSIGNED_ATTRIBUTE boolean => is it unsigned. *
  11. FIXED_PREC_SCALE boolean => can it be a money value. *
  12. AUTO_INCREMENT boolean => can it be used for an * auto-increment value. *
  13. LOCAL_TYPE_NAME String => localized version of type name * (may be null) *
  14. MINIMUM_SCALE short => minimum scale supported *
  15. MAXIMUM_SCALE short => maximum scale supported *
  16. SQL_DATA_TYPE int => unused *
  17. SQL_DATETIME_SUB int => unused *
  18. NUM_PREC_RADIX int => usually 2 or 10 *
* * @return a ResultSet object in which each row is an SQL * type description * @exception SQLException if a database access error occurs */ ResultSet getTypeInfo() throws SQLException; /** * Indicates that a NULL value is NOT allowed for this * data type. *

* A possible value for column NULLABLE in the * ResultSet object returned by the method * getTypeInfo. */ int typeNoNulls = 0; /** * Indicates that a NULL value is allowed for this * data type. *

* A possible value for column NULLABLE in the * ResultSet object returned by the method * getTypeInfo. */ int typeNullable = 1; /** * Indicates that it is not known whether a NULL value * is allowed for this data type. *

* A possible value for column NULLABLE in the * ResultSet object returned by the method * getTypeInfo. */ int typeNullableUnknown = 2; /** * Indicates that WHERE search clauses are not supported * for this type. *

* A possible value for column SEARCHABLE in the * ResultSet object returned by the method * getTypeInfo. */ int typePredNone = 0; /** * Indicates that the only WHERE search clause that can * be based on this type is WHERE . . . LIKE. *

* A possible value for column SEARCHABLE in the * ResultSet object returned by the method * getTypeInfo. */ int typePredChar = 1; /** * Indicates that one can base all WHERE search clauses * except WHERE . . . LIKE on this data type. *

* A possible value for column SEARCHABLE in the * ResultSet object returned by the method * getTypeInfo. */ int typePredBasic = 2; /** * Indicates that all WHERE search clauses can be * based on this type. *

* A possible value for column SEARCHABLE in the * ResultSet object returned by the method * getTypeInfo. */ int typeSearchable = 3; /** * Retrieves a description of the given table's indices and statistics. They are * ordered by NON_UNIQUE, TYPE, INDEX_NAME, and ORDINAL_POSITION. * *

Each index column description has the following columns: *

    *
  1. TABLE_CAT String => table catalog (may be null) *
  2. TABLE_SCHEM String => table schema (may be null) *
  3. TABLE_NAME String => table name *
  4. NON_UNIQUE boolean => Can index values be non-unique. * false when TYPE is tableIndexStatistic *
  5. INDEX_QUALIFIER String => index catalog (may be null); * null when TYPE is tableIndexStatistic *
  6. INDEX_NAME String => index name; null when TYPE is * tableIndexStatistic *
  7. TYPE short => index type: * *
  8. ORDINAL_POSITION short => column sequence number * within index; zero when TYPE is tableIndexStatistic *
  9. COLUMN_NAME String => column name; null when TYPE is * tableIndexStatistic *
  10. ASC_OR_DESC String => column sort sequence, "A" => ascending, * "D" => descending, may be null if sort sequence is not supported; * null when TYPE is tableIndexStatistic *
  11. CARDINALITY int => When TYPE is tableIndexStatistic, then * this is the number of rows in the table; otherwise, it is the * number of unique values in the index. *
  12. PAGES int => When TYPE is tableIndexStatisic then * this is the number of pages used for the table, otherwise it * is the number of pages used for the current index. *
  13. FILTER_CONDITION String => Filter condition, if any. * (may be null) *
* * @param catalog a catalog name; must match the catalog name as it * is stored in this database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schema a schema name; must match the schema name * as it is stored in this database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param table a table name; must match the table name as it is stored * in this database * @param unique when true, return only indices for unique values; * when false, return indices regardless of whether unique or not * @param approximate when true, result is allowed to reflect approximate * or out of data values; when false, results are requested to be * accurate * @return ResultSet - each row is an index column description * @exception SQLException if a database access error occurs */ ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) throws SQLException; /** * Indicates that this column contains table statistics that * are returned in conjunction with a table's index descriptions. *

* A possible value for column TYPE in the * ResultSet object returned by the method * getIndexInfo. */ short tableIndexStatistic = 0; /** * Indicates that this table index is a clustered index. *

* A possible value for column TYPE in the * ResultSet object returned by the method * getIndexInfo. */ short tableIndexClustered = 1; /** * Indicates that this table index is a hashed index. *

* A possible value for column TYPE in the * ResultSet object returned by the method * getIndexInfo. */ short tableIndexHashed = 2; /** * Indicates that this table index is not a clustered * index, a hashed index, or table statistics; * it is something other than these. *

* A possible value for column TYPE in the * ResultSet object returned by the method * getIndexInfo. */ short tableIndexOther = 3; //--------------------------JDBC 2.0----------------------------- /** * Retrieves whether this database supports the given result set type. * * @param type defined in java.sql.ResultSet * @return true if so; false otherwise * @exception SQLException if a database access error occurs * @see Connection * @since 1.2 */ boolean supportsResultSetType(int type) throws SQLException; /** * Retrieves whether this database supports the given concurrency type * in combination with the given result set type. * * @param type defined in java.sql.ResultSet * @param concurrency type defined in java.sql.ResultSet * @return true if so; false otherwise * @exception SQLException if a database access error occurs * @see Connection * @since 1.2 */ boolean supportsResultSetConcurrency(int type, int concurrency) throws SQLException; /** * * Retrieves whether for the given type of ResultSet object, * the result set's own updates are visible. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if updates are visible for the given result set type; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean ownUpdatesAreVisible(int type) throws SQLException; /** * Retrieves whether a result set's own deletes are visible. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if deletes are visible for the given result set type; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean ownDeletesAreVisible(int type) throws SQLException; /** * Retrieves whether a result set's own inserts are visible. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if inserts are visible for the given result set type; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean ownInsertsAreVisible(int type) throws SQLException; /** * Retrieves whether updates made by others are visible. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if updates made by others * are visible for the given result set type; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean othersUpdatesAreVisible(int type) throws SQLException; /** * Retrieves whether deletes made by others are visible. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if deletes made by others * are visible for the given result set type; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean othersDeletesAreVisible(int type) throws SQLException; /** * Retrieves whether inserts made by others are visible. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if inserts made by others * are visible for the given result set type; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean othersInsertsAreVisible(int type) throws SQLException; /** * Retrieves whether or not a visible row update can be detected by * calling the method ResultSet.rowUpdated. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if changes are detected by the result set type; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean updatesAreDetected(int type) throws SQLException; /** * Retrieves whether or not a visible row delete can be detected by * calling the method ResultSet.rowDeleted. If the method * deletesAreDetected returns false, it means that * deleted rows are removed from the result set. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if deletes are detected by the given result set type; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean deletesAreDetected(int type) throws SQLException; /** * Retrieves whether or not a visible row insert can be detected * by calling the method ResultSet.rowInserted. * * @param type the ResultSet type; one of * ResultSet.TYPE_FORWARD_ONLY, * ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @return true if changes are detected by the specified result * set type; false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean insertsAreDetected(int type) throws SQLException; /** * Retrieves whether this database supports batch updates. * * @return true if this database supports batch upcates; * false otherwise * @exception SQLException if a database access error occurs * @since 1.2 */ boolean supportsBatchUpdates() throws SQLException; /** * Retrieves a description of the user-defined types (UDTs) defined * in a particular schema. Schema-specific UDTs may have type * JAVA_OBJECT, STRUCT, * or DISTINCT. * *

Only types matching the catalog, schema, type name and type * criteria are returned. They are ordered by DATA_TYPE, TYPE_SCHEM * and TYPE_NAME. The type name parameter may be a fully-qualified * name. In this case, the catalog and schemaPattern parameters are * ignored. * *

Each type description has the following columns: *

    *
  1. TYPE_CAT String => the type's catalog (may be null) *
  2. TYPE_SCHEM String => type's schema (may be null) *
  3. TYPE_NAME String => type name *
  4. CLASS_NAME String => Java class name *
  5. DATA_TYPE int => type value defined in java.sql.Types. * One of JAVA_OBJECT, STRUCT, or DISTINCT *
  6. REMARKS String => explanatory comment on the type *
  7. BASE_TYPE short => type code of the source type of a * DISTINCT type or the type that implements the user-generated * reference type of the SELF_REFERENCING_COLUMN of a structured * type as defined in java.sql.Types (null if DATA_TYPE is not * DISTINCT or not STRUCT with REFERENCE_GENERATION = USER_DEFINED) *
* *

Note: If the driver does not support UDTs, an empty * result set is returned. * * @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schemaPattern a schema pattern name; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param typeNamePattern a type name pattern; must match the type name * as it is stored in the database; may be a fully qualified name * @param types a list of user-defined types (JAVA_OBJECT, * STRUCT, or DISTINCT) to include; null returns all types * @return ResultSet object in which each row describes a UDT * @exception SQLException if a database access error occurs * @since 1.2 */ ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) throws SQLException; /** * Retrieves the connection that produced this metadata object. *

* @return the connection that produced this metadata object * @exception SQLException if a database access error occurs * @since 1.2 */ Connection getConnection() throws SQLException; // ------------------- JDBC 3.0 ------------------------- /** * Retrieves whether this database supports savepoints. * * @return true if savepoints are supported; * false otherwise * @exception SQLException if a database access error occurs * @since 1.4 */ boolean supportsSavepoints() throws SQLException; /** * Retrieves whether this database supports named parameters to callable * statements. * * @return true if named parameters are supported; * false otherwise * @exception SQLException if a database access error occurs * @since 1.4 */ boolean supportsNamedParameters() throws SQLException; /** * Retrieves whether it is possible to have multiple ResultSet objects * returned from a CallableStatement object * simultaneously. * * @return true if a CallableStatement object * can return multiple ResultSet objects * simultaneously; false otherwise * @exception SQLException if a datanase access error occurs * @since 1.4 */ boolean supportsMultipleOpenResults() throws SQLException; /** * Retrieves whether auto-generated keys can be retrieved after * a statement has been executed. * * @return true if auto-generated keys can be retrieved * after a statement has executed; false otherwise * @exception SQLException if a database access error occurs * @since 1.4 */ boolean supportsGetGeneratedKeys() throws SQLException; /** * Retrieves a description of the user-defined type (UDT) hierarchies defined in a * particular schema in this database. Only the immediate super type/ * sub type relationship is modeled. *

* Only supertype information for UDTs matching the catalog, * schema, and type name is returned. The type name parameter * may be a fully-qualified name. When the UDT name supplied is a * fully-qualified name, the catalog and schemaPattern parameters are * ignored. *

* If a UDT does not have a direct super type, it is not listed here. * A row of the ResultSet object returned by this method * describes the designated UDT and a direct supertype. A row has the following * columns: *

    *
  1. TYPE_CAT String => the UDT's catalog (may be null) *
  2. TYPE_SCHEM String => UDT's schema (may be null) *
  3. TYPE_NAME String => type name of the UDT *
  4. SUPERTYPE_CAT String => the direct super type's catalog * (may be null) *
  5. SUPERTYPE_SCHEM String => the direct super type's schema * (may be null) *
  6. SUPERTYPE_NAME String => the direct super type's name *
* *

Note: If the driver does not support type hierarchies, an * empty result set is returned. * * @param catalog a catalog name; "" retrieves those without a catalog; * null means drop catalog name from the selection criteria * @param schemaPattern a schema name pattern; "" retrieves those * without a schema * @param typeNamePattern a UDT name pattern; may be a fully-qualified * name * @return a ResultSet object in which a row gives information * about the designated UDT * @throws SQLException if a database access error occurs * @since 1.4 */ ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) throws SQLException; /** * Retrieves a description of the table hierarchies defined in a particular * schema in this database. * *

Only supertable information for tables matching the catalog, schema * and table name are returned. The table name parameter may be a fully- * qualified name, in which case, the catalog and schemaPattern parameters * are ignored. If a table does not have a super table, it is not listed here. * Supertables have to be defined in the same catalog and schema as the * sub tables. Therefore, the type description does not need to include * this information for the supertable. * *

Each type description has the following columns: *

    *
  1. TABLE_CAT String => the type's catalog (may be null) *
  2. TABLE_SCHEM String => type's schema (may be null) *
  3. TABLE_NAME String => type name *
  4. SUPERTABLE_NAME String => the direct super type's name *
* *

Note: If the driver does not support type hierarchies, an * empty result set is returned. * * @param catalog a catalog name; "" retrieves those without a catalog; * null means drop catalog name from the selection criteria * @param schemaPattern a schema name pattern; "" retrieves those * without a schema * @param tableNamePattern a table name pattern; may be a fully-qualified * name * @return a ResultSet object in which each row is a type description * @throws SQLException if a database access error occurs * @since 1.4 */ ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) throws SQLException; /** * Indicates that NULL values might not be allowed. *

* A possible value for the column * NULLABLE in the ResultSet object * returned by the method getAttributes. */ short attributeNoNulls = 0; /** * Indicates that NULL values are definitely allowed. *

* A possible value for the column NULLABLE * in the ResultSet object * returned by the method getAttributes. */ short attributeNullable = 1; /** * Indicates that whether NULL values are allowed is not * known. *

* A possible value for the column NULLABLE * in the ResultSet object * returned by the method getAttributes. */ short attributeNullableUnknown = 2; /** * Retrieves a description of the given attribute of the given type * for a user-defined type (UDT) that is available in the given schema * and catalog. *

* Descriptions are returned only for attributes of UDTs matching the * catalog, schema, type, and attribute name criteria. They are ordered by * TYPE_SCHEM, TYPE_NAME and ORDINAL_POSITION. This description * does not contain inherited attributes. *

* The ResultSet object that is returned has the following * columns: *

    *
  1. TYPE_CAT String => type catalog (may be null) *
  2. TYPE_SCHEM String => type schema (may be null) *
  3. TYPE_NAME String => type name *
  4. ATTR_NAME String => attribute name *
  5. DATA_TYPE int => attribute type SQL type from java.sql.Types *
  6. ATTR_TYPE_NAME String => Data source dependent type name. * For a UDT, the type name is fully qualified. For a REF, the type name is * fully qualified and represents the target type of the reference type. *
  7. ATTR_SIZE int => column size. For char or date * types this is the maximum number of characters; for numeric or * decimal types this is precision. *
  8. DECIMAL_DIGITS int => the number of fractional digits *
  9. NUM_PREC_RADIX int => Radix (typically either 10 or 2) *
  10. NULLABLE int => whether NULL is allowed * *
  11. REMARKS String => comment describing column (may be null) *
  12. ATTR_DEF String => default value (may be null) *
  13. SQL_DATA_TYPE int => unused *
  14. SQL_DATETIME_SUB int => unused *
  15. CHAR_OCTET_LENGTH int => for char types the * maximum number of bytes in the column *
  16. ORDINAL_POSITION int => index of column in table * (starting at 1) *
  17. IS_NULLABLE String => "NO" means column definitely * does not allow NULL values; "YES" means the column might * allow NULL values. An empty string means unknown. *
  18. SCOPE_CATALOG String => catalog of table that is the * scope of a reference attribute (null if DATA_TYPE isn't REF) *
  19. SCOPE_SCHEMA String => schema of table that is the * scope of a reference attribute (null if DATA_TYPE isn't REF) *
  20. SCOPE_TABLE String => table name that is the scope of a * reference attribute (null if the DATA_TYPE isn't REF) *
  21. SOURCE_DATA_TYPE short => source type of a distinct type or user-generated * Ref type,SQL type from java.sql.Types (null if DATA_TYPE * isn't DISTINCT or user-generated REF) *
* @param catalog a catalog name; must match the catalog name as it * is stored in the database; "" retrieves those without a catalog; * null means that the catalog name should not be used to narrow * the search * @param schemaPattern a schema name pattern; must match the schema name * as it is stored in the database; "" retrieves those without a schema; * null means that the schema name should not be used to narrow * the search * @param typeNamePattern a type name pattern; must match the * type name as it is stored in the database * @param attributeNamePattern an attribute name pattern; must match the attribute * name as it is declared in the database * @return a ResultSet object in which each row is an * attribute description * @exception SQLException if a database access error occurs * @since 1.4 */ ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) throws SQLException; /** * Retrieves whether this database supports the given result set holdability. * * @param holdability one of the following constants: * ResultSet.HOLD_CURSORS_OVER_COMMIT or * ResultSet.CLOSE_CURSORS_AT_COMMIT * @return true if so; false otherwise * @exception SQLException if a database access error occurs * @see Connection * @since 1.4 */ boolean supportsResultSetHoldability(int holdability) throws SQLException; /** * Retrieves the default holdability of this ResultSet * object. * * @return the default holdability; either * ResultSet.HOLD_CURSORS_OVER_COMMIT or * ResultSet.CLOSE_CURSORS_AT_COMMIT * @exception SQLException if a database access error occurs * @since 1.4 */ int getResultSetHoldability() throws SQLException; /** * Retrieves the major version number of the underlying database. * * @return the underlying database's major version * @exception SQLException if a database access error occurs * @since 1.4 */ int getDatabaseMajorVersion() throws SQLException; /** * Retrieves the minor version number of the underlying database. * * @return underlying database's minor version * @exception SQLException if a database access error occurs * @since 1.4 */ int getDatabaseMinorVersion() throws SQLException; /** * Retrieves the major JDBC version number for this * driver. * * @return JDBC version major number * @exception SQLException if a database access error occurs * @since 1.4 */ int getJDBCMajorVersion() throws SQLException; /** * Retrieves the minor JDBC version number for this * driver. * * @return JDBC version minor number * @exception SQLException if a database access error occurs * @since 1.4 */ int getJDBCMinorVersion() throws SQLException; /** * Indicates that the value is an * X/Open (now know as Open Group) SQL CLI SQLSTATE value. *

* A possible return value for the method * SQLException.getSQLState. * @since 1.4 */ int sqlStateXOpen = 1; /** * Indicates that the value is an SQL99 SQLSTATE value. *

* A possible return value for the method * SQLException.getSQLState. * @since 1.4 */ int sqlStateSQL99 = 2; /** * Indicates whether the SQLSTATE returned by SQLException.getSQLState * is X/Open (now known as Open Group) SQL CLI or SQL99. * @return the type of SQLSTATE; one of: * sqlStateXOpen or * sqlStateSQL99 * @throws SQLException if a database access error occurs * @since 1.4 */ int getSQLStateType() throws SQLException; /** * Indicates whether updates made to a LOB are made on a copy or directly * to the LOB. * @return true if updates are made to a copy of the LOB; * false if updates are made directly to the LOB * @throws SQLException if a database access error occurs * @since 1.4 */ boolean locatorsUpdateCopy() throws SQLException; /** * Retrieves whether this database supports statement pooling. * * @return true if so; false otherwise * @throws SQLExcpetion if a database access error occurs * @since 1.4 */ boolean supportsStatementPooling() throws SQLException; }