Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members  

odbc::DatabaseMetaData Class Reference

Provides several tons of information about a data source. More...

#include <databasemetadata.h>

List of all members.

Public Types

Public Methods


Detailed Description

Provides several tons of information about a data source.

Warning:
The column names in ResultSets returned by methods of DatabaseMetaData can differ depending on what ODBC version the current driver supports. To avoid problems, columns should be referenced by number, and not by name. Also note that ODBC version 2 drivers do not return some of the specified columns.


Member Enumeration Documentation

anonymous enum

Procedure type constants for PROCEDURE_TYPE in getProcedures().

See also:
getProcedures()

anonymous enum

Version column constants for getVersionColumns().

See also:
getVersionColumns()

anonymous enum

Nullability constants for the resultset returned by getTypes().

See also:
getTypes()

anonymous enum

Nullability constants for the resultset returned by getColumns().

See also:
getColumns()

anonymous enum

Searchability constants.

Enumeration values:
typePredNone   Column is unsearchable.
typePredChar   Column can only be used in a LIKE clause.
typePredBasic   Column can be used in searches, except in LIKE.
typeSearchable   Column is searchable.

anonymous enum

Imported key UPDATE_RULE and DELETE_RULE constants.

See also:
getImportedKeys()

anonymous enum

Procedure column type constants for getProcedureColumns().

See also:
getProcedureColumns()

anonymous enum

Procedure column nullability constants for getProcedureColumns().

See also:
getProcedureColumns()

Member Function Documentation

bool odbc::DatabaseMetaData::dataDefinitionCausesTransactionCommit ( )

Checks if DDL in a transaction will cause the transaction to be committed.

Returns:
true if the data source only supports data manipulation (eg. UPDATE, INSERT) within a transaction and any data definition (eg. CREATE TABLE) will cause the transaction to be committed.

If this method returns true, supportsDataDefinitionAndDataManipulationTransactions(), supportsDataManipulationTransactionsOnly() and dataDefinitionIgnoredInTransactions() all return false.

bool odbc::DatabaseMetaData::dataDefinitionIgnoredInTransactions ( )

Checks if DDL in a transaction is ignored.

Returns:
true if the data source only supports data manipulation (eg. UPDATE, INSERT) within a transaction and any data definition (eg. CREATE TABLE) will be ignored.

If this method returns true, supportsDataDefinitionAndDataManipulationTransactions(), supportsDataManipulationTransactionsOnly() and dataDefinitionCausesTransactionCommit() all return false.

bool odbc::DatabaseMetaData::deletesAreDetected ( int type )

Returns true if a deleted row can be detected with ResultSet::rowDeleted().

Parameters:
type   The type of ResultSet of interest

ResultSet * odbc::DatabaseMetaData::getBestRowIdentifier ( const std::string & catalog,
const std::string & schema,
const std::string & table,
int scope,
bool nullable )

Returns the optimal set of columns that identifies a row.

The returned ResultSet is ordered by SCOPE and has the following columns:

  1. SCOPE - short - scope of this result:
    • bestRowTemporary - temporary, only while a ResultSet is using the row
    • bestRowTransaction - valid until the current transaction ends
    • bestRowSession - valid through the whole session - until the connection is closed
  2. COLUMN_NAME - string - the column name
  3. DATA_TYPE - short - the type of the column from Types
  4. TYPE_NAME - string - native type name (data source dependent)
  5. COLUMN_SIZE - int - the size (precision) of the column.
  6. BUFFER_LENGTH - int - unused
  7. DECIMAL_DIGITS - short - scale if applicable. Can be NULL.
  8. PSEUDO_COLUMN - short - whether this is a pseudo column:
    • bestRowUnknown - it is unknown whether this is a pseudo column
    • bestRowNotPseudo - it is definitely not a pseudo column
    • bestRowPseudo - it is definitely a pseudo column
Parameters:
catalog   the catalog name
schema   the schema name
table   the table name
scope   the scope of interest, same values as the SCOPE column.
nullable   whether nullable columns should be included

std::string odbc::DatabaseMetaData::getCatalogSeparator ( )

Returns the string used to separate a catalog in a fully qualified identifier.

For example Oracle would return a "@", while mysql would say ".".

std::string odbc::DatabaseMetaData::getCatalogTerm ( )

Returns the term for catalog used by the data source.

Can be for example "directory" or "database".

ResultSet * odbc::DatabaseMetaData::getCatalogs ( )

Returns a list of available catalogs in the database.

The returned ResultSet is the same as with getTables(), except that all columns but TABLE_CAT are NULL values.

ResultSet * odbc::DatabaseMetaData::getColumnPrivileges ( const std::string & catalog,
const std::string & schema,
const std::string & table,
const std::string & columnNamePattern )

Fetches a list of access rights for a table's columns.

The returned ResultSet is ordered by COLUMN_NAME and PRIVILEGE. It contains the following columns:

  1. TABLE_CAT - string - table catalog (can be NULL)
  2. TABLE_SCHEM - string - table schema (can be NULL)
  3. TABLE_NAME - string - table name
  4. COLUMN_NAME - string - column name
  5. GRANTOR - string - grantor (can be NULL). If GRANTEE owns the object, GRANTOR is "SYSTEM".
  6. GRANTEE - string - grantee
  7. PRIVILEGE - string - one of "SELECT", "INSERT", "UPDATE", "DELETE", "REFERENCES" or a data source specific value
  8. IS_GRANTABLE - string - "YES" if GRANTEE can grant this privilege to other users. "NO" if not. NULL if unknown.

ResultSet * odbc::DatabaseMetaData::getColumns ( const std::string & catalog,
const std::string & schemaPattern,
const std::string & tableNamePattern,
const std::string & columnNamePattern )

Fetches the available columns in a catalog.

The returned ResultSet has the following columns:

  1. TABLE_CAT - string - table catalog (can be NULL)
  2. TABLE_SCHEM - string - table schema (can be NULL)
  3. TABLE_NAME - string - table name
  4. COLUMN_NAME - string - column name
  5. COLUMN_TYPE - short - see Types
  6. TYPE_NAME - string - the name of the type. Data source dependent.
  7. COLUMN_SIZE - int - column size. For character and date types, this is the maximum number of characters. For numeric types this is the precision.
  8. BUFFER_LENGTH - not used
  9. DECIMAL_DIGITS - int - the number of fractional digits.
  10. NUM_PREC_RADIX - int - radix
  11. NULLABLE - int - whether the column allows NULLs
    • columnNoNulls - might not allow NULLs
    • columnNullable - definitely allows NULLs
    • columnNullableUnknown - nullability is unknown
  12. REMARKS - string - comments on the column (can be NULL)
  13. COLUMN_DEF - string - default value (can be NULL)
  14. SQL_DATA_TYPE - short -
  15. SQL_DATETIME_SUB - short -
  16. CHAR_OCTET_LENGTH - int - for character data types the maximum number of bytes in the column
  17. ORDINAL_POSITION - int - 1-based index in the table
  18. IS_NULLABLE - string - "NO" means in no way nullable, "YES" means possibly nullable. Empty string means nobody knows.

ResultSet * odbc::DatabaseMetaData::getCrossReference ( const std::string & primaryCatalog,
const std::string & primarySchema,
const std::string & primaryTable,
const std::string & foreignCatalog,
const std::string & foreignSchema,
const std::string & foreignTable )

Figures out in which way a foreign key table references a primary key table.

Returns it's findings in a ResultSet, ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME and KEY_SEQ. The ResultSet contains the following columns:

  1. PKTABLE_CAT - string - primary key table catalog
  2. PKTABLE_SCHEM - string - primary key table schema
  3. PKTABLE_NAME - string - primary key table name
  4. PKCOLUMN_NAME - string - primary key column name
  5. FKTABLE_CAT - string - foreign key table catalog
  6. FKTABLE_SCHEM - string - foreign key table schema
  7. FKTABLE_NAME - string - foreign key table name
  8. FKCOLUMN_NAME - string - foreign key column name
  9. KEY_SEQ - short - column sequence number in key (1-based)
  10. UPDATE_RULE - short - what happens to the foreign key when the primary is updated:
    • importedKeyNoAction - nothing happends since the primary key can not be updated
    • importedKeyCascade - change imported key to match the primary key
    • importedKeySetNull - update the imported key to NULL
    • importedKeySetDefault - update the impored key to it's default value
    • importedKeyRestrict - same as importedKeyNoAction
  11. DELETE_RULE - short - what happens to the foreign key when the primary is deleted:
    • importedKeyNoAction - nothing happends since the primary key can not be deleted
    • importedKeyCascade - imported key is deleted as well
    • importedKeySetNull - imported key is set to NULL
    • importedKeySetDefault - imported key is set to it's default value
    • importedKeyRestrict - same as importedKeyNoAction

int odbc::DatabaseMetaData::getDefaultTransactionIsolation ( )

Returns the default transaction isolation level.

See also:
Connection

ResultSet * odbc::DatabaseMetaData::getExportedKeys ( const std::string & catalog,
const std::string & schema,
const std::string & table ) []

Fetches a list of columns that reference a table's primary keys.

The returned ResultSet is identical to the one returned by getCrossReference().

std::string odbc::DatabaseMetaData::getIdentifierQuoteString ( )

Returns the string that can be used to quote identifiers.

If the data source doesn't support it, returns an empty string.

ResultSet * odbc::DatabaseMetaData::getImportedKeys ( const std::string & catalog,
const std::string & schema,
const std::string & table ) []

Fetches a list of columns that are foreign keys to other tables' primary keys.

The returned ResultSet is identical to the one returned by getCrossReference(), except it's ordered by PKTABLE_CAT, PKTABLE_SCHEM, PKTABLE_NAME and KEY_SEQ.

ResultSet * odbc::DatabaseMetaData::getIndexInfo ( const std::string & catalog,
const std::string & schema,
const std::string & table,
bool unique,
bool approximate )

Fetches a list of indices and statistics for a table.

The returned ResultSet is ordered by NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME and ORDINAL_POSITION. It contains the following columns:

  1. TABLE_CAT - string - table catalog (can be NULL)
  2. TABLE_SCHEM - string - table schema (can be NULL)
  3. TABLE_NAME - string - table name
  4. NON_UNIQUE - bool - true if index values can be non-unique. NULL if TYPE is tableIndexStatistic
  5. INDEX_QUALIFIER - string - index catalog, NULL if TYPE is tableIndexStatistic
  6. INDEX_NAME - string - index name, NULL if TYPE is tableIndexStatistic
  7. TYPE - short - index type:
    • tableIndexStatistic - no real index - a statistic for the table
    • tableIndexClustered - this index is clustered
    • tableIndexHashed - this index is hashed
    • tableIndexOther - this is some other kind of index
  8. ORDINAL_POSITION - short - column sequence number in index (1-based). NULL if TYPE is tableIndexStatistic.
  9. COLUMN_NAME - string - column name. NULL if TYPE is tableIndexStatistic.
  10. ASC_OR_DESC - string - "A" for ascending, "D" for descending index. NULL if TYPE is tableIndexStatistic.
  11. CARDINALITY - int - If TYPE is tableIndexStatistic, the number of rows in the table. Otherwise, the number of unique values in the index.
  12. PAGES - int - Number of pages used for the table if TYPE is tableIndexStatistic. Otherwise the number of pages used for the index.
  13. FILTER_CONDITION - string - filter condition (if any)
Parameters:
catalog   the catalog name
schema   the schema name
table   the table name
unique   whether only unique indices should be looked at
approximate   whether only accurate values should be retrieved

int odbc::DatabaseMetaData::getMaxTablesInSelect ( )

Returns the maximum number of tables that can be joined at once.

Returns:
zero if unknown.

ResultSet * odbc::DatabaseMetaData::getPrimaryKeys ( const std::string & catalog,
const std::string & schema,
const std::string & table )

Fetches a list of primary keys for a table.

The returned ResultSet is ordered by TABLE_CAT, TABLE_SCHEM, TABLE_NAME and KEY_SEQ. It contains the following columns:

  1. TABLE_CAT - string - table catalog (can be NULL)
  2. TABLE_SCHEM - string - table schema (can be NULL)
  3. TABLE_NAME - string - table name
  4. COLUMN_NAME - string - column name
  5. KEY_SEQ - string - sequence number in primary key (1-based)
  6. PK_NAME - string - primary key (constraint) name. Can be NULL.

ResultSet * odbc::DatabaseMetaData::getProcedureColumns ( const std::string & catalog,
const std::string & schemaPattern,
const std::string & procedureNamePattern,
const std::string & columnNamePattern )

Returns available procedure columns in a catalog.

The returned ResultSet is ordered by PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME and COLUMN_NAME. It contains the following columns:

  1. PROCEDURE_CAT - string - the procedure catalog
  2. PROCEDURE_SCHEM - string - the procedure schema
  3. PROCEDURE_NAME - string - the procedure name
  4. COLUMN_NAME - string - the column name
  5. COLUMN_TYPE - short - the column type
    • procedureColumnUnknown - beats the driver
    • procedureColumnIn - IN parameter
    • procedureColumnInOut - IN OUT parameter
    • procedureColumnOut - OUT parameter
    • procedureColumnReturn - procedure return value (eg. this procedure is actually a function)
    • procedureColumnResult - this column is part of a ResultSet this procedure returns
  6. DATA_TYPE - int - SQL type of the column
  7. TYPE_NAME - string - native type name
  8. COLUMN_SIZE - int - the precision of the column
  9. BUFFER_LENGTH - int - nothing of interest
  10. DECIMAL_DIGITS - short - scale, if applicable
  11. NUM_PREC_RADIX - short - radix, if applicable
  12. NULLABLE - short - whether the column is nullable
    • procedureNoNulls - not nullable
    • procedureNullable - nullable
    • procedureNullableUnknown - nobody knows
  13. REMARKS - string - comments on the column

Note: more columns can be returned depending on the driver.

ResultSet * odbc::DatabaseMetaData::getProcedures ( const std::string & catalog,
const std::string & schemaPattern,
const std::string & procedureNamePattern )

Returns available procedures in a catalog.

The returned ResultSet is ordered by PROCEDURE_CAT, PROCEDURE_SCHEM and PROCEDURE_NAME. It contains the following columns:

  1. PROCEDURE_CAT - string - the procedure catalog
  2. PROCEDURE_SCHEM - string - the procedure schema
  3. PROCEDURE_NAME - string - the procedure name
  4. NUM_INPUT_PARAMS - reserved for future use
  5. NUM_OUTPUT_PARAMS - reserved for future use
  6. NUM_RESULT_SETS - reserved for future use
  7. REMARKS - string - comments on the procedure
  8. PROCEDURE_TYPE - short - the procedure type:
    • procedureResultUnknown - can possibly return a result, but nobody is sure
    • procedureNoResult - does not return a result
    • procedureReturnsResult - returns a result

ResultSet * odbc::DatabaseMetaData::getSchemas ( )

Returns a list of available schemas in the database.

The returned ResultSet is the same as with getTables(), except that all columns but TABLE_SCHEM contain NULL values.

ResultSet * odbc::DatabaseMetaData::getTablePrivileges ( const std::string & catalog,
const std::string & schemaPattern,
const std::string & tableNamePattern )

Fetches a list of access rights for tables in a catalog.

A table privilege applies to one or more columns in a table. Do not assume that this privilege is valid for all columns.

The returned ResultSet is ordered by TABLE_CAT, TABLE_SCHEM, TABLE_NAME and PRIVILEGE. It contains the following columns:

  1. TABLE_CAT - string - table catalog (can be NULL)
  2. TABLE_SCHEM - string - table schema (can be NULL)
  3. TABLE_NAME - string - table name
  4. GRANTOR - string - grantor (can be NULL). If GRANTEE owns the object, GRANTOR is "SYSTEM".
  5. GRANTEE - string - grantee
  6. PRIVILEGE - string - one of "SELECT", "INSERT", "UPDATE", "DELETE", "REFERENCES" or a data source specific value
  7. IS_GRANTABLE - string - "YES" if GRANTEE can grant this privilege to other users. "NO" if not. NULL if unknown.

ResultSet * odbc::DatabaseMetaData::getTableTypes ( )

Fetches the table types the database supports.

The returned ResultSet is the same as with getTables(), except that all columns but TABLE_TYPE contain NULL values.

ResultSet * odbc::DatabaseMetaData::getTables ( const std::string & catalog,
const std::string & schemaPattern,
const std::string & tableNamePattern,
const std::vector<std::string>& types )

Fetches the available tables in the data source.

The returned ResultSet has the following columns:

  1. TABLE_CAT - string - table catalog (can be NULL)
  2. TABLE_SCHEM - string - table schema (can be NULL)
  3. TABLE_NAME - string - table name
  4. TABLE_TYPE - string - table type
  5. REMARKS - string - comments on the table
Parameters:
catalog   the catalog name
schemaPattern   schema name search pattern
tableNamePattern   table name search pattern
types   a list of table types. An empty list returns all table types.

ResultSet * odbc::DatabaseMetaData::getTypeInfo ( )

Fetches a list of data types supported by this data source.

The returned ResultSet is ordered by DATA_TYPE and then by how closely the type maps to the corresponding ODBC SQL type. It contains the following columns:

  1. TYPE_NAME - string - native type name
  2. DATA_TYPE - short - SQL data type from Types
  3. COLUMN_SIZE - int - maximum precision
  4. LITERAL_PREFIX - string - prefix used to quote a literal. Can be NULL.
  5. LITERAL_SUFFIX - string - suffix used to quote a literal. Can be NULL.
  6. CREATE_PARAMS - string - comma separated possible list of parameters to creating a column of this type
  7. NULLABLE - short - whether this type can contain NULLs:
    • typeNoNulls - no
    • typeNullable - yes, can be nullable
    • typeNullableUnknown - nobody knows
  8. CASE_SENSITIVE - bool - whether this type is case sensitive
  9. SEARCHABLE - bool - whether this type can be searched, eg used in WHERE-clauses:
    • typePredNone - no
    • typePredChar - yes, but only with a LIKE predicate
    • typePredBasic - yes, except in a LIKE predicate
    • typeSearchable - yes
  10. UNSIGNED_ATTRIBUTE - bool - true if this type is unsigned
  11. FIXED_PREC_SCALE - bool - whether this type has predefined fixed precision and scale (eg is useful for money)
  12. AUTO_UNIQUE_VALUE - bool - whether this type can be used for an autoincrementing value. NULL if not applicable.
  13. LOCAL_TYPE_NAME - string - localized native type name. Can be NULL.
  14. MINIMUM_SCALE - short - minimum supported scale, if applicable
  15. MAXIMUM_SCALE - short - maximum supported scale, if applicable
  16. SQL_DATA_TYPE - short - unused
  17. SQL_DATETIME_SUB - short - unused
  18. NUM_PREC_RADIX - int - radix, if applicable

ResultSet * odbc::DatabaseMetaData::getVersionColumns ( const std::string & catalog,
const std::string & schema,
const std::string & table )

Returns a list of columns for a table that are automatically updated when anything in a row is updated.

The returned ResultSet has the following unordered columns:

  1. SCOPE - short - unused
  2. COLUMN_NAME - string - the column name
  3. DATA_TYPE - short - the type of the column from Types
  4. TYPE_NAME - string - native type name (data source dependent)
  5. COLUMN_SIZE - int - the size (precision) of the column.
  6. BUFFER_LENGTH - int - unused
  7. DECIMAL_DIGITS - short - scale if applicable. Can be NULL.
  8. PSEUDO_COLUMN - short - whether this is a pseudo column:
    • versionColumnUnknown - it is unknown whether this is a pseudo column
    • versionColumnNotPseudo - it is definitely not a pseudo column
    • versionColumnPseudo - it is definitely a pseudo column

bool odbc::DatabaseMetaData::insertsAreDetected ( int type )

Returns true if an inserted row can be detected with ResultSet::rowInserted().

Parameters:
type   The type of ResultSet of interest

bool odbc::DatabaseMetaData::isCatalogAtStart ( )

Returns true if the catalog is positioned at the beginning of a fully qualified identifier.

For example mysql would say true, while oracle would say false.

bool odbc::DatabaseMetaData::othersDeletesAreVisible ( int type )

Returns true if rows deleted by others disapear from a ResultSet.

Parameters:
type   The type of ResultSet of interest

bool odbc::DatabaseMetaData::othersInsertsAreVisible ( int type )

Returns true if rows inserted by others become available in a ResultSet.

Parameters:
type   The type of ResultSet of interest

bool odbc::DatabaseMetaData::othersUpdatesAreVisible ( int type )

Returns true if rows updated by others are visible with their new values.

Parameters:
type   The type of ResultSet of interest

bool odbc::DatabaseMetaData::ownDeletesAreVisible ( int type )

Returns true if deleted rows dissapear from a ResultSet.

Parameters:
type   The type of ResultSet of interest

bool odbc::DatabaseMetaData::ownInsertsAreVisible ( int type )

Returns true if inserted rows become available in a ResultSet.

Parameters:
type   The type of ResultSet of interest

bool odbc::DatabaseMetaData::ownUpdatesAreVisible ( int type )

Returns true if updated rows are available with their new values in the ResultSet.

Parameters:
type   The type of ResultSet of interest

bool odbc::DatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions ( )

Checks if the data source supports both DML and DDL in transactions.

Returns:
true if the data source supports both data manipulation (eg. UPDATE, INSERT) and data definition (eg. CREATE TABLE) within a transaction.

If this method returns true, supportsDataManipulationTransactionsOnly(), dataDefinitionCausesTransactionCommit() and dataDefinitionIgnoredInTransactions() all return false.

bool odbc::DatabaseMetaData::supportsDataManipulationTransactionsOnly ( )

Checks if the data source only supports DML in transactions.

Returns:
true if the data source only supports data manipulation (eg. UPDATE, INSERT) within a transaction.

Attempts to use data definition (eg. CREATE TABLE) in a transaction will trigger an error.

If this method returns true, supportsDataDefinitionAndDataManipulationTransactions(), dataDefinitionCausesTransactionCommit() and dataDefinitionIgnoredInTransactions() all return false.

bool odbc::DatabaseMetaData::supportsOpenCursorsAcrossCommit ( )

Returns true if the data source and the driver can handle open cursors (eg.

ResultSets) across a commit, or false if they are invalidated.

bool odbc::DatabaseMetaData::supportsOpenCursorsAcrossRollback ( )

Returns true if the data source and the driver can handle open cursors (eg.

ResultSets) across a rollback, or false if they are invalidated.

bool odbc::DatabaseMetaData::supportsPositionedDelete ( )

Checks if the data source supports positioned delete.

Returns:
true if ("DELETE WHERE CURRENT OF ...") is supported

bool odbc::DatabaseMetaData::supportsPositionedUpdate ( )

Checks if the data source supports positioned update.

Returns:
true if ("UPDATE ... WHERE CURRENT OF ...") is supported

bool odbc::DatabaseMetaData::supportsResultSetConcurrency ( int type,
int concurrency )

Returns true if the data source supports the given result set concurrency for the given result set type.

Parameters:
type   The type to check for.
concurrency   The concurrency level to check for.
See also:
ResultSet

bool odbc::DatabaseMetaData::supportsResultSetType ( int type )

Returns true if the data source supports the given result set type.

Parameters:
type   The type to check for
See also:
ResultSet

bool odbc::DatabaseMetaData::supportsSelectForUpdate ( )

Checks if the data source supports.

Returns:
true if ("SELECT ... FOR UPDATE") is supported

bool odbc::DatabaseMetaData::supportsTransactionIsolationLevel ( int lev )

Returns true if the data source supports the specified transaction isolation level.

Parameters:
lev   The isolation level to check for

bool odbc::DatabaseMetaData::updatesAreDetected ( int type )

Returns true if ResultSet::rowUpdated() can determine whether a row has been updated.

Parameters:
type   The type of ResultSet of interest

The documentation for this class was generated from the following file:
Go back to the freeodbc++ homepage