/* * @(#)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: *
null
)
* null
)
* 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:
*
null
)
* null
)
* ResultSet
* 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: *
null
)
* null
)
* null
)
* null
)
* null
)
* null
)
* 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: *
null
)
* 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: *
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: *
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: *
null
)
* null
)
* NULL
values
* NULL
values
* null
)
* null
)
* null
if DATA_TYPE isn't REF)
* null
if the DATA_TYPE isn't REF)
* null
if the DATA_TYPE isn't REF)
* null
if DATA_TYPE
* isn't DISTINCT or user-generated REF)
* 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: *
null
)
* null
)
* null
)
* null
if unknown
* 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: *
null
)
* null
)
* null
)
* null
if unknown
* 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: *
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: *
java.sql.Types
* 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: *
null
)
* null
)
* null
)
* 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: *
null
)
* null
)
* null
)
* null
)
* NULL
* if its primary key has been updated
* null
)
* null
)
* 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: *
null
)
* null
)
* null
)
* being exported (may be null
)
* null
)
* being exported (may be null
)
* NULL
if
* its primary key has been updated
* NULL
if
* its primary key has been deleted
* null
)
* null
)
* 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: *
null
)
* null
)
* null
)
* being exported (may be null
)
* null
)
* being exported (may be null
)
* NULL
if
* its primary key has been updated
* NULL
if
* its primary key has been deleted
* null
)
* null
)
* 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: *
null
)
* null
)
* null
)
* null
)
* 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: *
null
)
* null
)
* null
);
* null
when TYPE is tableIndexStatistic
* null
when TYPE is
* tableIndexStatistic
* null
when TYPE is
* tableIndexStatistic
* null
if sort sequence is not supported;
* null
when TYPE is tableIndexStatistic
* null
)
* 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: *
null
)
* null
)
* 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:
*
null
)
* null
)
* null
)
* null
)
* 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: *
null
)
* null
)
* 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:
*
null
)
* null
)
* null
)
* null
)
* null
if DATA_TYPE isn't REF)
* null
if DATA_TYPE isn't REF)
* null
if the DATA_TYPE isn't REF)
* null
if DATA_TYPE
* isn't DISTINCT or user-generated REF)
* 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;
}