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