Search Results for

    Show / Hide Table of Contents

    Class AdbGenericTableInformationService

    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.

    Derive from this class (or from one of its descendant classes) to customize the information for either a new .NET provider, or to tweak an existing one.

    This class is immutable. This avoids threading issues, since an instance is often accessed by multiple threads. Any user custom provider services should also be immutable for the same reason.

    Inheritance
    Object
    AdbGenericTableInformationService
    AdbMySqlClientTableInformationService
    AdbMySqlConnectorTableInformationService
    AdbNpgsqlTableInformationService
    AdbOdbcTableInformationService
    AdbSqlClientTableInformationService
    AdbSQLiteTableInformationService
    Implements
    IAdbTableInformationService
    Namespace: actionETL.Adb
    Assembly: actionETL.dll
    Syntax
    public abstract class AdbGenericTableInformationService : IAdbTableInformationService
    Remarks

    Notes to implementers:

    The AdbTableInformation class ensures the table name is not null or 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.

    Constructors

    AdbGenericTableInformationService(IAdbConnection)

    Initializes a new instance of the AdbGenericTableInformationService class, an optional service which manipulates table identifiers and provides information about tables, such as what tables and columns are present.

    Declaration
    protected AdbGenericTableInformationService(IAdbConnection adbConnection)
    Parameters
    Type Name Description
    IAdbConnection adbConnection

    A database connection.

    Properties

    Connection

    Gets the database connection to run commands on.

    Declaration
    protected IAdbConnection Connection { get; }
    Property Value
    Type Description
    IAdbConnection

    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
    public virtual string ComposeTableIdentifierParts(string quotedTableName, string quotedSchemaName, string quotedCatalogName)
    Parameters
    Type Name Description
    String quotedTableName

    Name of the table, with quoting if required. Cannot be null or only whitespace.

    String quotedSchemaName

    Name of the schema, with quoting if required, or null to not set it.

    String quotedCatalogName

    Name of the catalog, with quoting if required, or null to not set it. Catalog is normally the database if the provider uses it (e.g. SqlClient); otherwise null if unused (e.g. MySqlClient provider).

    Returns
    Type Description
    String

    The combined table identifier string.

    Exceptions
    Type Condition
    ArgumentException

    quotedTableName cannot be null or only whitespace.

    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
    public virtual 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.

    Exceptions
    Type Condition
    ArgumentException

    compositeTableName cannot be null or only whitespace.

    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
    public abstract 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 null, in which case the current schema and catalog for the connection is used. Providers where 'database' and 'schema' means the same thing, i.e. MySqlClient, put the database/schema in the schema property.

    Returns
    Type Description
    Task<OutcomeStatusResult<IList<AdbColumnSchema>>>

    On success, Status will be Succeeded, and Result will be populated with the table columns.

    On failure, Status will have a failure status, and Result will be null.

    An incorrect parameter will throw immediately. Any other exceptions or failures will be caught and contained in the returned OutcomeStatus, which should then be logged by the caller. If a .NET provider doesn't support retrieving this information, an Error status with a NotSupportedException is 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

    tableIdentifier.UnquotedTableName cannot be null or only whitespace.

    ArgumentNullException

    tableIdentifier

    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
    public abstract 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 null, in which case the current schema and catalog for the connection is used. Providers where 'database' and 'schema' means the same thing, i.e. MySqlClient, put the database/schema in the schema property.

    Returns
    Type Description
    Task<OutcomeStatusResult<AdbTableType>>

    On success, Status will be Succeeded, and Result will describe if the table exists, and if so, what type (table, view, etc.)

    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 OutcomeStatus, which should then be logged by the caller.

    See the provider documentation for specific Open() exceptions. Some providers may throw if the connection is associated with a transaction.

    Exceptions
    Type Condition
    ArgumentException

    tableIdentifier.UnquotedTableName cannot be null or only whitespace.

    ArgumentNullException

    tableIdentifier

    Implements

    IAdbTableInformationService

    See Also

    AdbTableCommand
    AdbDataSourceInformation
    AdbConnection
    AdbProvider
    In This Article
    Back to top Copyright © 2023 Envobi Ltd