Interface IAdbTableInformationService
An optional service that manipulates table identifiers and provides information about table-like objects, such as which ones exists and what their type is (table, view, etc), and which columns are present. This assists with writing provider-independent database code, and is available as TableInformation. Also see HasTableInformationService, AdbTableCommand, AdbDataSourceInformation, AdbConnection and AdbProvider.
Implement this interface to customize the information for either a new .NET provider, or to tweak an existing one.
Namespace: actionETL.Adb
Assembly: actionETL.dll
Syntax
public interface IAdbTableInformationService
Remarks
Notes to implementers:
The AdbTableInformation class ensures any AdbTableIdentifier
or table name parameter is not null
or only whitespace, so implementations of this
interface do not need to check this.
Note however that the schema and catalog parts can be null
or whitespace.
Methods
ComposeTableIdentifierParts(String, String, String)
Composes the table identifier parts into a composite table identifier string.
Each specified part must follow the quoting requirements of the provider, e.g. use quoting due to potential spaces in the part name (i.e. parts won't be automatically quoted).
Declaration
string ComposeTableIdentifierParts(string quotedTableName, string quotedSchemaName, string quotedCatalogName)
Parameters
Type | Name | Description |
---|---|---|
String | quotedTableName | Name of the table, with quoting if required. Cannot be |
String | quotedSchemaName | Name of the schema, with quoting if required, or |
String | quotedCatalogName | Name of the catalog, with quoting if required, or |
Returns
Type | Description |
---|---|
String | The combined table identifier string. |
CreateTableIdentifier(String)
Creates an identifier for a table-like database object from a composite name, i.e. it splits a potentially delimited table name into its constituent parts, i.e. database or catalog name, schema or owner name, and table name. Depending on the provider, the identifier can be either system or user regular tables, temporary tables, views, table-valued functions, etc.
Note that some providers do not support all identifier parts;
unsupported parts will be set to null
, but unused parts will be set to
an empty string. While the SqlClient provider puts the database and schema in the
CatalogName
and SchemaName
properties respectively,
the MySqlClient provider puts the database in the SchemaName
property.
Declaration
IAdbTableIdentifier CreateTableIdentifier(string compositeTableName)
Parameters
Type | Name | Description |
---|---|---|
String | compositeTableName | Name of the table, potentially including database or catalog name, and schema or owner name. The string must be formatted according to the requirements of the data source, i.e. use the appropriate quoting characters and delimiters, in the appropriate order. |
Returns
Type | Description |
---|---|
IAdbTableIdentifier | A table identifier. |
GetTableColumnsAsync(IAdbTableIdentifier)
Gets information (name, data type etc.) about all columns in a table-like database object. Depending on the provider, this can include both system and user regular tables, temporary tables, views, table-valued functions, etc.
Note that it does not include objects that do not themselves have columns, e.g. stored procedures.
Note that this method does not log errors. Instead the caller should normally log any returned failure status.
Declaration
Task<OutcomeStatusResult<IList<AdbColumnSchema>>> GetTableColumnsAsync(IAdbTableIdentifier tableIdentifier)
Parameters
Type | Name | Description |
---|---|---|
IAdbTableIdentifier | tableIdentifier | The identifier for a table-like object to check. It must specify table name,
but schema and/or catalog names can be |
Returns
Type | Description |
---|---|
Task<OutcomeStatusResult<IList<AdbColumnSchema>>> | On success, Status will be
On failure, Status will have a
failure status, and Result will be
An incorrect parameter will throw immediately. Any other exceptions or failures
will be caught and contained in the returned See the provider documentation for specific Open() exceptions. Some providers may throw if the connection is associated with a transaction. |
GetTableTypeAsync(IAdbTableIdentifier)
Check if a table-like object exists, and what type it is. Depending on provider, this can e.g. be a regular table, temporary table, view, table-valued function etc. It does not include stored procedures etc. that do not themselves have columns.
Note that this method does not log errors. Instead the caller should normally log any returned failure status.
Declaration
Task<OutcomeStatusResult<AdbTableType>> GetTableTypeAsync(IAdbTableIdentifier tableIdentifier)
Parameters
Type | Name | Description |
---|---|---|
IAdbTableIdentifier | tableIdentifier | The identifier for a table-like object to check. It must specify table name,
but schema and/or catalog names can be |
Returns
Type | Description |
---|---|
Task<OutcomeStatusResult<AdbTableType>> | On success, Status will be
On failure, Status will have a failure status, and Result will be undefined.
An incorrect parameter will throw immediately. Any other exceptions or failures
will be caught and contained in the returned See the provider documentation for specific Open() exceptions. Some providers may throw if the connection is associated with a transaction. |
Exceptions
Type | Condition |
---|---|
ArgumentException |
|
ArgumentNullException |
|