libodbc++  0.2.5
Public Types | Public Member Functions | List of all members
odbc::DatabaseMetaData Class Reference

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

#include <databasemetadata.h>

Public Types

enum  
 Constants for the ResultSet returned by getBestRowIdentifier.
 
enum  
 Constants for the ResultSet returned by getBestRowIdentifier.
 
enum  
 Version column constants for getVersionColumns() More...
 
enum  
 Nullability constants for the resultset returned by getTypes() More...
 
enum  
 Nullability constants for the resultset returned by getColumns(). More...
 
enum  { typePredNone = SQL_UNSEARCHABLE, typePredChar = SQL_LIKE_ONLY, typePredBasic = SQL_ALL_EXCEPT_LIKE, typeSearchable = SQL_SEARCHABLE }
 Searchability constants. More...
 
enum  
 Imported key UPDATE_RULE and DELETE_RULE constants. More...
 
enum  
 Index type constants.
 
enum  
 Procedure column type constants for getProcedureColumns() More...
 
enum  
 Procedure column nullability constants for getProcedureColumns() More...
 
enum  
 Procedure type constants for PROCEDURE_TYPE in getProcedures() More...
 

Public Member Functions

ConnectiongetConnection ()
 Returns the Connection this came from.
 
std::string getDatabaseProductName ()
 Returns the name of the database product.
 
std::string getDatabaseProductVersion ()
 Returns the version of the database product as a string.
 
std::string getDriverName ()
 Returns the name of the ODBC driver used.
 
std::string getDriverVersion ()
 Returns the version of the ODBC driver used.
 
int getDriverMajorVersion ()
 Returns the major ODBC version of the driver used. More...
 
int getDriverMinorVersion ()
 Returns the minor ODBC version of the driver used. More...
 
std::string getIdentifierQuoteString ()
 Returns the string that can be used to quote identifiers. More...
 
std::string getCatalogTerm ()
 Returns the term for catalog used by the data source. More...
 
std::string getSchemaTerm ()
 Returns the term for schema used by the data source, for example "owner" or just "schema".
 
std::string getTableTerm ()
 Returns the term for table used by the data source.
 
std::string getProcedureTerm ()
 Returns the term the data source uses for a procedure, for example "stored procedure".
 
std::string getUserName ()
 Returns the user name of the connection.
 
std::string getCatalogSeparator ()
 Returns the string used to separate a catalog in a fully qualified identifier. More...
 
bool isCatalogAtStart ()
 Returns true if the catalog is positioned at the beginning of a fully qualified identifier. More...
 
std::string getSQLKeywords ()
 Returns a comma-separated list of all non-ODBC keywords specific to this data source.
 
bool supportsTransactions ()
 Returns true if the data source supports transactions.
 
int getDefaultTransactionIsolation ()
 Returns the default transaction isolation level. More...
 
bool supportsTransactionIsolationLevel (int lev)
 Returns true if the data source supports the specified transaction isolation level. More...
 
bool supportsDataDefinitionAndDataManipulationTransactions ()
 Checks if the data source supports both DML and DDL in transactions. More...
 
bool supportsDataManipulationTransactionsOnly ()
 Checks if the data source only supports DML in transactions. More...
 
bool dataDefinitionCausesTransactionCommit ()
 Checks if DDL in a transaction will cause the transaction to be committed. More...
 
bool dataDefinitionIgnoredInTransactions ()
 Checks if DDL in a transaction is ignored. More...
 
bool supportsOpenCursorsAcrossCommit ()
 Returns true if the data source and the driver can handle open cursors (eg. More...
 
bool supportsOpenCursorsAcrossRollback ()
 Returns true if the data source and the driver can handle open cursors (eg. More...
 
bool supportsOpenStatementsAcrossCommit ()
 Returns true if the data source and the driver can handle open statements across a commit, or false if they are invalidated.
 
bool supportsOpenStatementsAcrossRollback ()
 Returns true if the data source and the driver can handle open statements across a rollback, or false if they are invalidated.
 
bool supportsResultSetType (int type)
 Returns true if the data source supports the given result set type. More...
 
bool supportsResultSetConcurrency (int type, int concurrency)
 Returns true if the data source supports the given result set concurrency for the given result set type. More...
 
bool supportsCatalogsInDataManipulation ()
 Returns true if catalogs are supported in DML.
 
bool supportsCatalogsInProcedureCalls ()
 Returns true if catalogs are supported in procedure call statements.
 
bool supportsCatalogsInTableDefinitions ()
 Returns true if catalogs are supported in CREATE/ALTER TABLE statements.
 
bool supportsCatalogsInIndexDefinitions ()
 Returns true if catalogs are supported in index definitions.
 
bool supportsCatalogsInPrivilegeDefinitions ()
 Returns true if catalogs are supported in privilege definition statements.
 
bool supportsSchemasInDataManipulation ()
 Returns true if schemas are supported in DML.
 
bool supportsSchemasInProcedureCalls ()
 Returns true if schemas are supported in procedure call statements.
 
bool supportsSchemasInTableDefinitions ()
 Returns true if schemas are supported in CREATE/ALTER TABLE statements.
 
bool supportsSchemasInIndexDefinitions ()
 Returns true if schemas are supported in index definitions.
 
bool supportsSchemasInPrivilegeDefinitions ()
 Returns true if schemas are supported in privilege definition statements.
 
bool nullPlusNonNullIsNull ()
 Returns true if NULL plus a non-NULL value yields NULL.
 
bool supportsColumnAliasing ()
 Returns true if the data source supports column aliasing, for example SELECT COLUMN1 [AS] C1 FROM TABLE.
 
bool supportsConvert ()
 Returns true if the CONVERT function is supported by the data source.
 
bool supportsConvert (int fromType, int toType)
 Returns true if CONVERT between fromType and toType is supported.
 
bool supportsAlterTableWithDropColumn ()
 Returns true if ALTER TABLE with drop column is supported.
 
bool supportsAlterTableWithAddColumn ()
 Returns true if ALTER TABLE with add column is supported.
 
std::string getExtraNameCharacters ()
 Returns the extra characters beyond A-Z, a-z, 0-9 and _ that can be used in unquoted identifier names.
 
std::string getSearchStringEscape ()
 Returns the string that can be used to escape wildcard characters.
 
std::string getTimeDateFunctions ()
 Returns a comma-separated list of all time and date functions supported.
 
std::string getSystemFunctions ()
 Returns a comma-separated list of all system functions supported.
 
std::string getStringFunctions ()
 Returns a comma-separated list of all string functions supported.
 
std::string getNumericFunctions ()
 Returns a comma-separated list of all numeric functions supported.
 
bool supportsLikeEscapeClause ()
 Returns true if the escape character is supported in LIKE clauses.
 
bool supportsMultipleResultSets ()
 Returns true if a query can return multiple ResultSets.
 
bool supportsMultipleTransactions ()
 Returns true if multiple transactions can be open at once on different connections.
 
bool supportsNonNullableColumns ()
 Returns true if columns can be defined as non-nullable.
 
bool supportsMinimumSQLGrammar ()
 Returns true if the data source supports ODBC minimum SQL grammar.
 
bool supportsCoreSQLGrammar ()
 Returns true if the data source supports the core ODBC SQL grammar.
 
bool supportsExtendedSQLGrammar ()
 Returns true if the data source supports the ODBC extended SQL grammar.
 
bool supportsANSI92EntryLevelSQL ()
 Returns true if the data source supports the ANSI92 entry level SQL grammar.
 
bool supportsANSI92IntermediateSQL ()
 Returns true if the data source supports the ANSI92 intermediate level SQL grammar.
 
bool supportsANSI92FullSQL ()
 Returns true if the data source supports the full ANSI92 SQL grammar.
 
bool supportsPositionedDelete ()
 Checks if the data source supports positioned delete. More...
 
bool supportsPositionedUpdate ()
 Checks if the data source supports positioned update. More...
 
bool supportsSelectForUpdate ()
 Checks if the data source supports. More...
 
bool supportsIntegrityEnhancementFacility ()
 Returns true if the data source supports the SQL Integrity Enhancement Facility.
 
bool supportsBatchUpdates ()
 Whether the data source supports batch updates.
 
bool supportsSubqueriesInComparisons ()
 Returns true if the data source supports subqueries in comparisons.
 
bool supportsSubqueriesInExists ()
 Returns true if the data source supports subqueries in "EXISTS" expressions.
 
bool supportsSubqueriesInIns ()
 Returns true if the data source supports subqueries in "IN" expressions.
 
bool supportsSubqueriesInQuantifieds ()
 Returns true if the data source supports subqueries in quantified expressions.
 
bool supportsCorrelatedSubqueries ()
 Returns true if the data source supports correlated subqueries.
 
bool ownUpdatesAreVisible (int type)
 Returns true if updated rows are available with their new values in the ResultSet. More...
 
bool ownDeletesAreVisible (int type)
 Returns true if deleted rows dissapear from a ResultSet. More...
 
bool ownInsertsAreVisible (int type)
 Returns true if inserted rows become available in a ResultSet. More...
 
bool othersUpdatesAreVisible (int type)
 Returns true if rows updated by others are visible with their new values. More...
 
bool othersDeletesAreVisible (int type)
 Returns true if rows deleted by others disapear from a ResultSet. More...
 
bool othersInsertsAreVisible (int type)
 Returns true if rows inserted by others become available in a ResultSet. More...
 
bool deletesAreDetected (int type)
 Returns true if a deleted row can be detected with ResultSet::rowDeleted(). More...
 
bool insertsAreDetected (int type)
 Returns true if an inserted row can be detected with ResultSet::rowInserted(). More...
 
bool updatesAreDetected (int type)
 Returns true if ResultSet::rowUpdated can determine whether a row has been updated. More...
 
int getMaxBinaryLiteralLength ()
 Returns the max number of hex characters allowed in an inline binary literal.
 
int getMaxCharLiteralLength ()
 Returns the maximum length of an inline character string.
 
int getMaxColumnNameLength ()
 Returns the maximum length of a column name.
 
int getMaxColumnsInGroupBy ()
 Returns the maximum number of columns this data source can have in a GROUP BY clause.
 
int getMaxColumnsInIndex ()
 Returns the maximum number of columns allowed in an index.
 
int getMaxColumnsInOrderBy ()
 Returns the maximum number of columns this data source can have in an ORDER BY clause.
 
int getMaxColumnsInSelect ()
 Returns the maximum number of columns this data source can SELECT.
 
int getMaxColumnsInTable ()
 Returns the maximum number of columns a table can consist of.
 
int getMaxCursorNameLength ()
 Returns the maximum length of a cursor name.
 
int getMaxIndexLength ()
 Returns the maximum length of an index in bytes.
 
int getMaxSchemaNameLength ()
 Returns the maximum length of a schema name.
 
int getMaxProcedureNameLength ()
 Returns the maximum length of a procedure name.
 
int getMaxCatalogNameLength ()
 Returns the maximum length of a catalog name.
 
int getMaxRowSize ()
 Returns the maximum size of a row in bytes.
 
bool doesMaxRowSizeIncludeBlobs ()
 Returns true if the value returned by getMaxRowSize() includes BLOBs.
 
int getMaxStatementLength ()
 Returns the maximum length of a statement (query).
 
int getMaxTableNameLength ()
 Returns the maximum length of a table name.
 
int getMaxTablesInSelect ()
 Returns the maximum number of tables that can be joined at once. More...
 
int getMaxUserNameLength ()
 Returns the maximum length of a username.
 
int getMaxConnections ()
 Returns the maximum number of connections we can have open to this data source.
 
int getMaxStatements ()
 Returns the maximim number of statements that can be open on this connection.
 
bool supportsMixedCaseIdentifiers ()
 Returns true if the data source supports case sensitive mixed case identifiers.
 
bool supportsMixedCaseQuotedIdentifiers ()
 Returns true if the data source supports case sensitive mixed case quoted identifiers.
 
bool supportsStoredProcedures ()
 Returns true if the data source supports some form of stored procedures.
 
bool supportsGroupBy ()
 Returns true if the data source supports the GROUP BY clause.
 
bool supportsGroupByUnrelated ()
 Returns true if the columns in a GROUP BY clause are independent of the selected ones.
 
bool supportsGroupByBeyondSelect ()
 Returns true if the columns in a GROUP BY don't have to be selected.
 
bool supportsUnion ()
 Returns true if the data source supports UNION joins.
 
bool supportsUnionAll ()
 Returns true if the data source supports UNION ALL joins.
 
bool supportsOuterJoins ()
 Returns true if the data source supports some form of outer joins.
 
bool supportsFullOuterJoins ()
 Returns true if the data source fully supports outer joins.
 
bool supportsLimitedOuterJoins ()
 Returns true if the data source only supports certain types of outer joins.
 
bool usesLocalFilePerTable ()
 Returns true if the data source uses a file for each table.
 
bool usesLocalFiles ()
 Returns true if the data source uses local files.
 
bool nullsAreSortedAtStart ()
 Returns true if NULL values are sorted first, regardless of the sort order.
 
bool nullsAreSortedAtEnd ()
 Returns true if NULL values are sorted last, regardless of the sort order.
 
bool nullsAreSortedHigh ()
 Returns true if NULL values are sorted high.
 
bool nullsAreSortedLow ()
 Returns true if NULL values are sorted low.
 
bool allProceduresAreCallable ()
 Returns true if all procedures returned by getProcedures() are callable by the current user.
 
bool allTablesAreSelectable ()
 Returns true if all tables returned by getTables() are selectable by the current user.
 
bool isReadOnly ()
 Returns true if the data source or the current connection is in read-only mode.
 
bool storesLowerCaseIdentifiers ()
 Returns true if the data source treats identifiers as case insensitive and stores them in lower case.
 
bool storesLowerCaseQuotedIdentifiers ()
 Returns true if the data source treats quoted identifiers as case insensitive and stores them in lower case.
 
bool storesMixedCaseIdentifiers ()
 Returns true if the data source treats identifiers as case insensitive and stores them in mixed case.
 
bool storesMixedCaseQuotedIdentifiers ()
 Returns true if the data source treats quoted identifiers as case insensitive and stores them in mixed case.
 
bool storesUpperCaseIdentifiers ()
 Returns true if the data source treats identifiers as case insensitive and stores them in upper case.
 
bool storesUpperCaseQuotedIdentifiers ()
 Returns true if the data source treats quoted identifiers as case insensitive and stores them in upper case.
 
ResultSetgetTypeInfo ()
 Fetches a list of data types supported by this data source. More...
 
ResultSetgetColumns (const std::string &catalog, const std::string &schemaPattern, const std::string &tableNamePattern, const std::string &columnNamePattern)
 Fetches the available columns in a catalog. More...
 
ResultSetgetTables (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. More...
 
ResultSetgetTablePrivileges (const std::string &catalog, const std::string &schemaPattern, const std::string &tableNamePattern)
 Fetches a list of access rights for tables in a catalog. More...
 
ResultSetgetColumnPrivileges (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. More...
 
ResultSetgetPrimaryKeys (const std::string &catalog, const std::string &schema, const std::string &table)
 Fetches a list of primary keys for a table. More...
 
ResultSetgetIndexInfo (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. More...
 
ResultSetgetCrossReference (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. More...
 
ResultSetgetImportedKeys (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. More...
 
ResultSetgetExportedKeys (const std::string &catalog, const std::string &schema, const std::string &table)
 Fetches a list of columns that reference a table's primary keys. More...
 
ResultSetgetProcedures (const std::string &catalog, const std::string &schemaPattern, const std::string &procedureNamePattern)
 Returns available procedures in a catalog. More...
 
ResultSetgetProcedureColumns (const std::string &catalog, const std::string &schemaPattern, const std::string &procedureNamePattern, const std::string &columnNamePattern)
 Returns available procedure columns in a catalog. More...
 
ResultSetgetBestRowIdentifier (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. More...
 
ResultSetgetVersionColumns (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. More...
 
ResultSetgetTableTypes ()
 Fetches the table types the database supports. More...
 
ResultSetgetSchemas ()
 Returns a list of available schemas in the database. More...
 
ResultSetgetCatalogs ()
 Returns a list of available catalogs in the database. More...
 

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.

Enumerator
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
typeThe 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
catalogthe catalog name
schemathe schema name
tablethe table name
scopethe scope of interest, same values as the SCOPE column.
nullablewhether nullable columns should be included
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.

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::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
int odbc::DatabaseMetaData::getDriverMajorVersion ( )

Returns the major ODBC version of the driver used.

int odbc::DatabaseMetaData::getDriverMinorVersion ( )

Returns the minor ODBC version of the driver used.

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
catalogthe catalog name
schemathe schema name
tablethe table name
uniquewhether only unique indices should be looked at
approximatewhether 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::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
catalogthe catalog name
schemaPatternschema name search pattern
tableNamePatterntable name search pattern
typesa list of table types. An empty list returns all table types.
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::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
typeThe 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
typeThe type of ResultSet of interest
bool odbc::DatabaseMetaData::othersInsertsAreVisible ( int  type)

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

Parameters
typeThe 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
typeThe type of ResultSet of interest
bool odbc::DatabaseMetaData::ownDeletesAreVisible ( int  type)

Returns true if deleted rows dissapear from a ResultSet.

Parameters
typeThe type of ResultSet of interest
bool odbc::DatabaseMetaData::ownInsertsAreVisible ( int  type)

Returns true if inserted rows become available in a ResultSet.

Parameters
typeThe 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
typeThe 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
typeThe type to check for.
concurrencyThe 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
typeThe 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
levThe 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
typeThe type of ResultSet of interest

The documentation for this class was generated from the following file:

Go back to the libodbc++ homepage