Powered by Zoomin Software. For more details please contactZoomin

DataDirect Connect for ADO.NET Data Provider Help

Additional Schema Metadata Collections

  • Last Updated: April 16, 2026
  • 14 minute read
    • ADO.NET
    • Documentation

All DataDirect providers support additional MetaData collections.

Result sets for each Metadata collection are defined in the section for each collection. However, it is important to note that the DataDirect Connect for ADO.NET data providers will not return exactly the same result set for each Metadata collection. As is standard coding practice in .NET, the data provider returns only the columns of the result set that apply to it.

Additionally, it is important to note that a data provider might not implement every Metadata collection. If a collection does not apply to a particular database, then the data provider must not implement that collection. Finally, not all restrictions are the same across providers for each collection. Restrictions that do not apply to a given data source are not implemented for that data provider's Metadata collections (for example, Catalog restrictions are not implemented for the Oracle data provider).

Therefore, it is important that applications that use the Metadata collections conform to the following best practices:

  • Get result column data using the name of the column, not the ordinal, for example, using the DataTable.Columns property rather than getColumn(1). This lets the client program know whether the column exists for a given Metadata collection.
  • Check for the existence of a Metadata collection before calling it. Use the MetaData collections to determine which Collections are supported, for example, by calling GetSchema(DbMetaDataCollectionNames.MetaDataCollections) on the Connection object. This lets the program know whether the given collection exists for the given data provider.
  • Check for the existence of a particular restriction before using it. For example, get the restriction’s Metadata collection — GetSchema(DbMetaDataCollectionNames.Restrictions).

Catalogs Schema Collection

Description: The Catalogs collection identifies the physical attributes associated with catalogs that are accessible from the DBMS. For some systems, there may be only one catalog.

Number of restrictions: 1

Restrictions available: CATALOG_NAME

Sort order: CATALOG_NAME

Note: The Oracle data provider does not support the Catalogs collection.

Catalogs Schema Collection

Column Name .NET Framework DataType1 Description
CATALOG_NAME String Catalog name. Cannot be null.
DESCRIPTION String A description of the catalog (if any). If none, an empty string must be returned.
1 All classes are System.*XXX*. For example, System.String.

Columns Schema Collection

Description: The Columns collection identifies the columns of tables (including views) defined in the catalog that are accessible to a given user. The following table identifies the columns of tables that are defined in the catalog that are accessible to a given user.

Number of restrictions: 3

Restrictions available: TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME

Sort order: TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION

Columns Schema Collection

Column Name .NET Framework DataType1 Description
CHARACTER_MAXIMUM_ LENGTH Int32 The maximum possible length of a value in the column. For character, binary, or bit columns, this is one of the following:
  • The maximum length of the column in characters, bytes, or bits, respectively, if one is defined. The maximum length of the data type in characters, bytes, or bits, respectively, if the column does not have a defined length.
  • Zero (0) if neither the column or the data type has a defined maximum length, or if the column is not a character, binary, or bit column.
CHARACTER_OCTET_LENGTH Int32 The maximum length in octets (bytes) of the column, if the type of the column is character or binary. A value of zero (0) means the column has no maximum length or that the column is not a character or binary column.
CHARACTER_SET_CATALOG String Catalog name in which the character set is defined. This column does not exist if the provider does not support catalogs or different character sets.
CHARACTER_SET_NAME String Character set name. This column does not exist if the provider does not support different character sets.
CHARACTER_SET_SCHEMA String Unqualified schema name in which the character set is defined. This column does not exist if the provider does not support schemas or different character sets.
COLLATION_CATALOG String The catalog name in which the collation is defined. This column exists only if the data provider supports catalogs or different collations.
COLLATION_NAME String Collation name. This column exists only if the provider supports different collations.
COLLATION_SCHEMA String Unqualified schema name in which the collation is defined. This column exists only if the data provider supports schemas or different collations.
COLUMN_DEFAULT String Default value of the column.
COLUMN_HASDEFAULT Boolean true: The column has a default value.
false: The column does not have a default value, or it is unknown whether the column has a default value.
COLUMN_NAME String The name of the column; this might not be unique. This column is returned only if the data provider supports catalogs.
DATA_TYPE Object The indicator of the column's data type.
If Xml Describe Type is set to Clob, this should be a System.String. Otherwise, this should be System.Byte.
This value cannot be null.
DATETIME_PRECISION Int32 Datetime precision (number of digits in the fractional seconds portion) of the column if the column is a datetime. If the column's data type is not datetime, this is DbNull.
IS_NULLABLE Boolean true: The column might be nullable.
false: The column is known not to be nullable.
NATIVE_DATA_TYPE String The data source description of the type. This should be BLOB.
This value cannot be null.
NUMERIC_PRECISION Int32 If the column's data type is of a numeric data, this is the maximum precision of the column.
This column is returned only if the data provider supports catalogs.
NUMERIC_PRECISION_RADIX Int32 The radix indicates in which base the values in NUMERIC_PRECISION and NUMERIC_SCALE are expressed. It is only useful to return either 2 or 10.
This column is returned only if the data provider supports catalogs.
NUMERIC_SCALE Int32 If the column's type is a numeric type that has a scale, this is the number of digits to the right of the decimal point. This column is returned only if the data provider supports catalogs.
ORDINAL_POSITION Int32 The ordinal of the column. Columns are numbered starting from one. This column is returned only if the data provider supports catalogs.
PROVIDER_DEFINED_TYPE Int32 The data source defined type of the column is mapped to the type enumeration of the data provider. For example, for Oracle, this is the DDTek.Oracle.OracleDbType enumeration.
This value cannot be null.
PROVIDER_GENERIC_TYPE Int32 The provider-defined type of the column as mapped to the System.Data.DbType enumeration.
This value cannot be null.
TABLE_NAME String The table name. This column is returned only if the data provider supports catalogs.
TABLE_SCHEMA String The unqualified schema name.
1 All classes are System.*XXX*. For example, System.String.

ForeignKeys Schema Collection

Description: The ForeignKeys collection identifies the foreign key columns that are defined in the catalog by a given user.

Number of restrictions: 4

Restrictions available: PK_TABLE_SCHEMA, PK_TABLE_NAME, FK_TABLE_SCHEMA, FK_TABLE_NAME

Sort order: FK_TABLE_SCHEMA, FK_TABLE_NAME

ForeignKeys Schema Collection

Column Name .NET Framework Datatype1 Description
DEFERRABILITY String The deferability of the foreign key. The value is one of the following:
  • INITIALLY DEFERRED
  • INITIALLY IMMEDIATE
  • NOT DEFERRABLE
DELETE_RULE String If a delete rule was specified, the value is one of the following:
CASCADE: A referential action of CASCADE was specified.
SET NULL: A referential action of SET NULL was specified.
SET DEFAULT: A referential action of SET DEFAULT was specified.
NO ACTION: A referential action of NO ACTION was specified.
For some data providers, this column does not exist if they cannot determine the DELETE_RULE. In most cases, this implies a default of NO ACTION.
FK_COLUMN_NAME String Foreign key column name.
FK_NAME String Foreign key name. This column exists only if the data provider supports named foreign key constraints.
FK_TABLE_NAME String Foreign key table name.
FK_TABLE_SCHEMA String Unqualified schema name in which the foreign key table is defined. This column exists only if the data provider supports schemas.
ORDINAL Int32 The order of the column names in the key. For example, a table might contain several foreign key references to another table. The ordinal starts over for each reference; for example, two references to a three-column key would return 1, 2, 3, 1, 2, 3.
PK_COLUMN_NAME String Primary key column name.
PK_NAME String Primary key name. This column exists only if the data provider supports named primary key constraints.
PK_TABLE_NAME String Primary key table name.
PK_TABLE_SCHEMA String Unqualified schema name in which the primary key table is defined. This column exists only if the data provider supports schemas.
UPDATE_RULE String If an update rule was specified, the value is one of the following:
CASCADE: A referential action of CASCADE was specified.
SET NULL: A referential action of SET NULL was specified.
SET DEFAULT: A referential action of SET DEFAULT was specified.
NO ACTION: A referential action of NO ACTION was specified.
For some data providers, this column will not exist if they cannot determine the UPDATE_RULE. In most cases, this implies a default of NO ACTION.
1 All classes are System.*XXX*. For example, System.String

Indexes Schema Collection

Description: The Indexes collection identifies the indexes that are defined in the catalog that are owned by a given user.

Number of restrictions: 4

Restrictions available: TABLE_SCHEMA, INDEX_NAME, TYPE, TABLE_NAME

Sort order: UNIQUE, TYPE, INDEX_CATALOG, INDEX_SCHEMA, INDEX_NAME, ORDINAL_POSITION

Indexes Schema Collection

Column Name .NET Framework DataType1 Description
CARDINALITY Int32 The number of unique values in the index.
CLUSTERED Boolean Determines whether an index is clustered. This is one of the following:
true: The leaf nodes of the index contain full rows, not bookmarks. This is a way to represent a table clustered by key value.
false: The leaf nodes of the index contain bookmarks of the base table rows whose key value matches the key value of the index entry.
COLLATION String This is one of the following:
ASC: The sort sequence for the column is ascending.
DESC: The sort sequence for the column is descending.
This column exists only when a column sort sequence is supported.
COLUMN_NAME String The column name.
FILL_FACTOR Int32 For a B+-tree index, this property represents the storage utilization factor of page nodes during the creation of the index. The value is an integer from 0 to 100, representing the percentage of use of an index node.
For a linear hash index, this property represents the storage utilization of the entire hash structure (the ratio of used area to total allocated area) before a file structure expansion occurs.
FILTER_CONDITION String The WHERE clause identifying the filtering restriction.
INDEX_CATALOG String The catalog name. This column exists only if the data provider supports catalogs.
INDEX_NAME String The index name.
INDEX_SCHEMA String The unqualified schema name. This column exists only if the data provider supports schemas.
INITIAL_SIZE Int32 The total amount of bytes allocated to this structure at creation time.
INTEGRATED Boolean Whether the index is integrated, that is, whether all base table columns are available from the index. This is one of the following:
true: The index is integrated. For clustered indexes, this value must always be true.
false: The index is not integrated.
NULL_COLLATION String How NULLs are collated in the index. This is one of the following:
END: NULLs are collated at the end of the list, regardless of the collation order.
START: NULLs are collated at the start of the list, regardless of the collation order.
HIGH: NULLs are collated at the high end of the list.
LOW: NULLs are collated at the low end of the list.
NULLS Int32 Whether NULL keys are allowed. This is one of the following:
ALLOWNULL: The index allows entries where the key columns are NULL.
DISALLOWNULL: The index does not allow entries where the key columns are NULL. If the consumer attempts to insert an index entry with a NULL key, the data provider returns an error.
IGNORENULL: The index does not insert entries containing NULL keys. If the consumer attempts to insert an index entry with a NULL key, the data provider ignores that entry and no error code is returned.
IGNOREANYNULL: The index does not insert entries where some column key has a NULL value. For an index having a multicolumn search key, if the consumer inserts an index entry with a NULL value in some column of the search key, the provider ignores that entry and no error code is returned.
ORDINAL_POSITION Int32 The ordinal position of the column in the index, starting with 1.
PAGES Int32 The number of pages that are used to store the index.
PRIMARY_KEY Boolean Determines whether the index represents the primary key on the table. This column does not exist if this is not known.
TABLE_NAME String The table name.
TABLE_SCHEMA String Unqualified schema name. This column exists only if the data provider supports schemas.
TYPE String The type of the index. This is one of the following:
BTREE: The index is a B+-tree.
HASH: The index is a hash file using, for example, linear or extensible hashing.
CONTENT: The index is a content index.
OTHER: The index is some other type of index.
UNIQUE Boolean Determines whether index keys must be unique. This is one of the following:
true: The index keys must be unique.
false: Duplicate keys are allowed.
1 All classes are System.*XXX*. For example, System.String.

PrimaryKeys Schema Collection

Description: The PrimaryKeys collection identifies the primary key columns that are defined in the catalog by a given user.

Number of restrictions: 2

Restrictions available: TABLE_SCHEMA, TABLE_NAME

Sort order: TABLE_SCHEMA, TABLE_NAME

PrimaryKeys Schema Collection

Column Name .NET Framework DataType1 Description
COLUMN_NAME String The primary key column name.
ORDINAL Int32 The order of the column names in the key.
PK_NAME String The primary key name.
TABLE_NAME String The table name.
TABLE_SCHEMA String Unqualified schema name in which the table is defined. This column exists only if the data provider supports schemas.
1 All classes are System.*XXX*. For example, System.String.

ProcedureParameters Schema Collection

Description: The ProcedureParameters collection returns information about the parameters and return codes of procedures that are part of the Procedures collection.

Number of restrictions: 4

Restrictions available: PROCEDURE_CATALOG, PROCEDURE_SCHEMA, PROCEDURE_NAME, PARAMETER_NAME

Sort order: PROCEDURE_CATALOG, PROCEDURE_SCHEMA, PROCEDURE_NAME, ORDINAL_POSITION

ProcedureParameters Schema Collection

Column Name .NET Framework DataType1 Description
CHARACTER_MAXIMUM_ LENGTH Int32 The maximum possible length of a value in the parameter. For character, binary, or bit parameters, this is one of the following:
  • The maximum length of the parameter in characters, bytes, or bits, respectively, if one is defined. For example, a CHAR(5) parameter has a maximum length of 5.
  • The maximum length of the data type in characters, bytes, or bits, respectively, if the parameter does not have a defined length.
  • Zero (0) if neither the parameter or the data type has a defined maximum length.
  • DbNull for all other types of parameters.
CHARACTER_OCTET_LENGTH Int32 The maximum length in octets (bytes) of the parameter, if the type of the parameter is character or binary.
If the parameter has no maximum length, the value of zero (0).
For all other types of parameters, the value is -1.
DATA_TYPE Object The indicator of the column's data type.
This value cannot be null.
DESCRIPTION String The description of the parameter. For example, the description of the Name parameter in a procedure that adds a new employee might be Employee name.
IS_NULLABLE Boolean true: The parameter might be nullable.
false: The parameter is not nullable.
NATIVE_DATA_TYPE String The data source description of the type.
This value cannot be null.
NUMERIC_PRECISION Int32 If the column's data type is of a numeric data, this is the maximum precision of the column.
If the column's data type is not numeric, this is DbNull.
NUMERIC_SCALE Int32 If the column's type is a numeric type that has a scale, this is the number of digits to the right of the decimal point.
Otherwise, this is DbNull.
ORDINAL_POSITION Int32 If the parameter is an input, input/output, or output parameter, this is the one-based ordinal position of the parameter in the procedure call.
If the parameter is the return value, this is DbNull.
PARAMETER_DEFAULT String The default value of parameter.
If the default value is a NULL, then the PARAMETER_HASDEFAULT column will return true and the PARAMETER_DEFAULT column will not exist.
If PARAMETER_HASDEFAULT is set to false, then the PARAMETER_DEFAULT column will not exist.
PARAMETER_HASDEFAULT Int32 true: The parameter has a default value.
false: The parameter does not have a default value, or it is unknown whether the parameter has a default value.
PARAMETER_NAME String The parameter name. DbNull if the parameter is not named.
PARAMETER_TYPE String This is one of the following:
INPUT: The parameter is an input parameter.
INPUTOUTPUT: The parameter is an input/output parameter.
OUTPUT: The parameter is an output parameter.
RETURNVALUE: The parameter is a procedure return value.
UNKNOWN: The parameter type is unknown to the provider.
PROCEDURE_CATALOG String The catalog name. This column exists only if the data provider supports catalogs.
PROCEDURE_NAME String The procedure name.
PROCEDURE_SCHEMA String The catalog name. This column exists only if the data provider supports schemas.
PROVIDER_DEFINED_TYPE Int32 The data source defined type of the column as mapped to the type enumeration of the data provider. For example, for the Oracle data provider, this is the DDtek.Oracle.OracleDbType enumeration.
This value cannot be null.
PROVIDER_GENERIC_TYPE Int32 The data source defined type of the column as mapped to the System.Data.DbType enumeration.
This value cannot be null.
1 All classes are System.*XXX*. For example, System.String.

Procedures Schema Collection

Description: The Procedures schema collection identifies the procedures that are defined in the catalog. When possible, only procedures for which the connected user has execute permission should be returned.

Number of restrictions: 4

Restrictions available: PROCEDURE_CATALOG, PROCEDURE_SCHEMA, PROCEDURE_NAME, PROCEDURE_TYPE

Sort order: PROCEDURE_CATALOG, PROCEDURE_SCHEMA, PROCEDURE_NAME

Procedures Schema Collection

Column Name .NET Framework DataType1 Description
DESCRIPTION String A description of the procedure. If not available, the provider returns DbNull.
PROCEDURE_CATALOG String The catalog name. This column exists only if the data provider supports catalogs.
PROCEDURE_DEFINITION String The procedure definition, or return DbNull if the data provider does not have this information available.
PROCEDURE_NAME String The procedure name.
PROCEDURE_SCHEMA String Unqualified schema name. This column exists only if the data provider supports schemas.
PROCEDURE_TYPE String This is one of the following:
UNKNOWN: It is not known whether there is a returned value.
PROCEDURE: Procedure; there is no returned value.
FUNCTION: Function; there is a returned value.
1 All classes are System.*XXX*. For example, System.String.

Schemata Schema Collection

Description: The Schemata collection identifies the schemas that are owned by a given user.

Number of restrictions: 3

Restrictions Available: CATALOG_NAME, SCHEMA_NAME, SCHEMA_OWNER

Sort order: CATALOG_NAME, SCHEMA_NAME, SCHEMA_OWNER

Schemata Schema Collection

Column Name .NET Framework DataType1 Description
CATALOG_NAME String The catalog name. This column exists only if the data provider supports catalogs.
DEFAULT_CHARACTER_SET_ CATALOG String The catalog name of the default character set for columns and domains in the schemas. This column exists only if the data provider supports catalogs.
DEFAULT_CHARACTER_SET_ NAME String The default character set name. This column exists only if the data provider supports different character sets.
DEFAULT_CHARACTER_SET_ SCHEMA String The unqualified schema name of the default character set for columns and domains in the schemas. This column exists only if the data provider supports different character sets.
SCHEMA_NAME String The unqualified schema name.
SCHEMA_OWNER String The user that owns the schemas.
1 All classes are System.*XXX*. For example, System.String

Tables Schema Collection

Number of Restrictions: 3

Restrictions Available: TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE

Sort order: TABLE_TYPE, TABLE_SCHEMA, TABLE_NAME

Description: The Tables collection identifies the tables (including views) that are defined in the catalog that are accessible to a given user.

Note: For the .NET Framework datatypes, all classes are System.xxx.

Tables Schema Collection

Column Name Type Indicator Description
TABLE_SCHEMA String The unqualified schema name in which the table is defined. This column exists only if the data provider supports schemas.
TABLE_NAME String Table name.
TABLE_TYPE String The table type. One of the following or a provider-specific value:
  • ALIAS
  • TABLE
  • SYNONYM
  • SYSTEM TABLE
  • VIEW
  • GLOBAL TEMPORARY
  • LOCAL TEMPORARY
  • SYSTEM VIEW
This column cannot contain an empty string.
DESCRIPTION String A description of the table. DbNull if no description is associated with the column.

TablePrivileges Schema Collection

Description: The TablePrivileges schema collection identifies the privileges on tables that are defined in the catalog that are available to or granted by a given user.

Number of restrictions: 4

Restrictions available: TABLE_SCHEMA, TABLE_NAME, GRANTOR, GRANTEE

Sort order: TABLE_SCHEMA, TABLE_NAME, PRIVILEGE_TYPE

TablePrivileges Schema Collection

Column Name Type Indicator1 Description
GRANTEE String The user name (or PUBLIC) to whom the privilege has been granted.
GRANTOR String The user who granted the privileges on the table in TABLE_NAME.
IS_GRANTABLE Boolean true: The privilege being described was granted with the WITH GRANT OPTION clause.
false: The privilege being described was not granted with the WITH GRANT OPTION clause.
PRIVILEGE_TYPE String The privilege type. This is one of the following:
  • SELECT
  • DELETE
  • INSERT
  • UPDATE
  • REFERENCES
TABLE_NAME String The table name.
TABLE_SCHEMA String The unqualified schema name in which the table is defined. This column exists only if the data provider supports schemas.
1 All classes are System.*XXX*. For example, System.String.

Views Schema Collection

Description: The Views collection identifies the views that are defined in the catalog and that are accessible to a given user.

Number of restrictions: 2

Restrictions available: TABLE_SCHEMA, TABLE_NAME

Sort order: TABLE_SCHEMA, TABLE_NAME

Views Schema Collection

Column Name Type Indicator1 Description
CHECK_OPTION Boolean A check option. This is one of the following:
true: Local update checking only.
false: Cascaded update checking (this has the same effect as not specifying a CHECK OPTION on the view definition).
DATE_CREATED String The date when the view was created or DbNull if the data provider does not have this information.
DATE_MODIFIED String Date when the view definition was last modified or DbNull if the data provider does not have this information.
DESCRIPTION String A description of the view.
IS_UPDATABLE Boolean true: The view can be updated.
false: The view cannot be updated.
TABLE_NAME String The table name.
TABLE_SCHEMA String The unqualified schema name in which the table is defined. This column exists only if the data provider supports schemas.
VIEW _DEFINITION String The view definition. This is a query expression.
1 All classes are System.*XXX*. For example, System.String
TitleResults for “How to create a CRG?”Also Available inAlert