OdbcDataReader.GetSchemaTable Metodo

Definizione

Restituisce un oggetto DataTable che descrive i metadati della colonna dell'oggetto OdbcDataReader.Returns a DataTable that describes the column metadata of the OdbcDataReader.

public:
 override System::Data::DataTable ^ GetSchemaTable();
public:
 virtual System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
public System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable
Public Function GetSchemaTable () As DataTable

Restituisce

Oggetto DataTable che descrive i metadati della colonna.A DataTable that describes the column metadata.

Implementazioni

Eccezioni

Commenti

Il metodo GetSchemaTable restituisce i metadati relativi a ogni colonna nell'ordine seguente:The GetSchemaTable method returns metadata about each column in the following order:

Colonna DataReaderDataReader column DescrizioneDescription
ColumnNameColumnName Nome della colonna. Questa operazione potrebbe non essere univoca.The name of the column; this might not be unique. Se non è possibile determinare il nome della colonna, viene restituito un valore null.If the column name cannot be determined, a null value is returned. Questo nome riflette sempre la denominazione più recente della colonna nella vista o nel testo del comando corrente.This name always reflects the most recent naming of the column in the current view or command text.
ColumnOrdinalColumnOrdinal Ordinale in base zero della colonna.The zero-based ordinal of the column. Questa colonna non può contenere un valore Null.This column cannot contain a null value.
ColumnSizeColumnSize Lunghezza massima possibile di un valore nella colonna.The maximum possible length of a value in the column. Per le colonne che utilizzano un tipo di dati a lunghezza fissa, corrisponde alla dimensione del tipo di dati.For columns that use a fixed-length data type, this is the size of the data type.
NumericPrecisionNumericPrecision Se DbType è un tipo di dati numerico, si tratta della precisione massima della colonna.If DbType is a numeric data type, this is the maximum precision of the column. La precisione dipende dalla definizione della colonna.The precision depends on the definition of the column. Se DbType non è un tipo di dati numerico, non utilizzare i dati in questa colonna.If DbType is not a numeric data type, do not use the data in this column. Se il driver ODBC sottostante restituisce un valore di precisione per un tipo di dati non numerico, questo valore viene utilizzato nella tabella dello schema.If the underlying ODBC driver returns a precision value for a non-numeric data type, this value is used in the schema table.
NumericScaleNumericScale Se DbType è Decimal, il numero di cifre a destra della virgola decimale.If DbType is Decimal, the number of digits to the right of the decimal point. In caso contrario, si tratta di un valore null.Otherwise, this is a null value. Se il driver ODBC sottostante restituisce un valore di precisione per un tipo di dati non numerico, questo valore viene utilizzato nella tabella dello schema.If the underlying ODBC driver returns a precision value for a non-numeric data type, this value is used in the schema table.
DataTypeDataType Esegue il mapping al tipo Common Language Runtime di DbType.Maps to the common language runtime type of DbType.
ProviderTypeProviderType Tipo di driver sottostante.The underlying driver type.
IsLongIsLong true se la colonna contiene un oggetto binario lungo (BLOB) contenente dati molto lunghi.true if the column contains a Binary Long Object (BLOB) that contains very long data. La definizione di dati molto lunghi è specifica del driver.The definition of very long data is driver-specific.
AllowDBNullAllowDBNull true se il consumer può impostare la colonna su un valore null o se il driver non è in grado di determinare se il consumer può impostare la colonna su un valore null.true if the consumer can set the column to a null value or if the driver cannot determine whether the consumer can set the column to a null value. In caso contrario, false.Otherwise, false. Una colonna può contenere valori Null, anche se non può essere impostata su questo tipo di valore.A column may contain null values, even if it cannot be set to a null value.
IsReadOnlyIsReadOnly true se la colonna non può essere modificata. in caso contrario false.true if the column cannot be modified; otherwise false.
IsRowVersionIsRowVersion Impostato se nella colonna è contenuto un identificatore di riga persistente in cui non è possibile scrivere e se la colonna non dispone di valori significativi se non per effettuare l'identificazione della riga.Set if the column contains a persistent row identifier that cannot be written to, and has no meaningful value except to identity the row.
IsUniqueIsUnique true: due righe nella tabella di base (la tabella restituita in BaseTableName) possono avere lo stesso valore in questa colonna.true: No two rows in the base table (the table returned in BaseTableName) can have the same value in this column. È sicuramente true se la colonna rappresenta una chiave da sola o se esiste un vincolo di tipo UNIQUE che si applica solo a questa colonna.IsUnique is guaranteed to be true if the column represents a key by itself or if there is a constraint of type UNIQUE that applies only to this column.

false: la colonna può contenere valori duplicati nella tabella di base.false: The column can contain duplicate values in the base table. Il valore predefinito per questa colonna è false.The default for this column is false.
IsKeyIsKey true: la colonna è un set di colonne nel set di righe che, insieme, identifica in modo univoco la riga.true: The column is one of a set of columns in the rowset that, taken together, uniquely identify the row. Il set di colonne con IsKey impostato su true deve identificare in modo univoco una riga nel set di righe.The set of columns with IsKey set to true must uniquely identify a row in the rowset. Non è necessario che questo set di colonne sia un set minimo di colonne.There is no requirement that this set of columns is a minimal set of columns. Questo set di colonne può essere generato da una chiave primaria della tabella di base, un vincolo UNIQUE o un indice univoco.This set of columns may be generated from a base table primary key, a unique constraint, or a unique index.

false: la colonna non è necessaria per identificare in modo univoco la riga.false: The column is not required to uniquely identify the row.
IsAutoIncrementIsAutoIncrement true se la colonna assegna valori a nuove righe con incrementi fissi; in caso contrario false.true if the column assigns values to new rows in fixed increments; otherwise false. Il valore predefinito per questa colonna è false.The default for this column is false.
BaseSchemaNameBaseSchemaName Nome dello schema nell'origine dati che contiene la colonna.The name of the schema in the data source that contains the column. NULL se non è possibile determinare il nome del catalogo di base.NULL if the base catalog name cannot be determined. Il valore predefinito per questa colonna è un valore null.The default for this column is a null value.
BaseCatalogNameBaseCatalogName Nome del catalogo nell'archivio dati contenente la colonna.The name of the catalog in the data store that contains the column. NULL se non è possibile determinare il nome del catalogo di base.NULL if the base catalog name cannot be determined. Il valore predefinito per questa colonna è un valore null.The default for this column is a null value.
BaseTableNameBaseTableName Nome della tabella o vista nell'archivio dati contenente la colonna.The name of the table or view in the data store that contains the column. Valore Null se il nome della tabella di base non può essere determinato.A null value if the base table name cannot be determined. Il valore predefinito di questa colonna è un valore null.The default of this column is a null value.
BaseColumnNameBaseColumnName Nome della colonna nell'archivio dati.The name of the column in the data store. Potrebbe essere diverso dal nome della colonna restituito nella colonna ColumnName se è stato utilizzato un alias.This might be different from the column name returned in the ColumnName column if an alias was used. Valore null se il nome della colonna di base non può essere determinato o se la colonna del set di righe è derivata, ma non identica, a una colonna nell'archivio dati.A null value if the base column name cannot be determined or if the rowset column is derived, but not identical to, a column in the data store. Il valore predefinito per questa colonna è un valore null.The default for this column is a null value.

Viene restituita una riga per ogni colonna del set di risultati.A row is returned for every column in the results set.

Il .NET Framework provider di dati per ODBC presuppone che le informazioni sui metadati siano disponibili da un driver ODBC dopo la chiamata di una delle funzioni SQLPrepare, SQLExecuteo SQLExecuteDirect .The .NET Framework Data Provider for ODBC assumes that metadata information is available from an ODBC driver after one of SQLPrepare, SQLExecute, or SQLExecuteDirect functions are called. Per il corretto funzionamento del comando "SchemaOnly", SQLPrepare deve restituire le informazioni necessarie sui metadati.For "SchemaOnly" command behavior to work correctly, SQLPrepare must return the required metadata information. Non tutti i driver ODBC supportano questa funzione o restituiscono informazioni sui metadati.Not all ODBC drivers support this function or return metadata information. In questi casi, la parte o tutte le informazioni contenute in SchemaTable non saranno disponibili.In these cases, part or all of the information in the SchemaTable will be missing. Dopo la chiamata a SQLPrepare, il provider di dati chiama la funzione ODBC SQLColAttribute per trovare le informazioni sui metadati correlate a ogni colonna nei risultati della query (ad esempio, Long, Unique, AllowDBNull, BaseTableName, BaseColumnName).After calling SQLPrepare, The data provider calls the ODBC SQLColAttribute function to find the metadata information related to each column in the query results (for example, IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Se il driver sottostante non restituisce alcune di queste informazioni, i valori corrispondenti in SchemaTable non saranno impostati correttamente.If the underlying driver does not return some of this information, the corresponding values in the SchemaTable will not be set correctly.

Il .NET Framework provider di dati per ODBC chiama anche SQLPrimaryKeys per recuperare le informazioni sulla chiave per ogni tabella.The .NET Framework Data Provider for ODBC also calls SQLPrimaryKeys to retrieve the key information for every table. Se il driver ODBC sottostante non supporta questa funzione, il provider di dati chiama SQLStatistics e sceglie uno degli indici univoci come chiave primaria per la tabella.If the underlying ODBC driver does not support this function, the data provider calls SQLStatistics and chooses one of the unique indexes as the primary key for the table. Questo potrebbe non fornire sempre i risultati desiderati.This may not always give the results that you want.

per il corretto funzionamento, OdbcCommandBuilder necessario l'identificazione corretta delle chiavi primarie della tabella.OdbcCommandBuilder needs the correct identification of the primary keys of the table in order to work correctly. Se BaseTableName non viene restituito per ogni colonna nei risultati della query, il .NET Framework provider di dati per ODBC tenta di analizzare l'istruzione SQL per trovare i nomi di tabella necessari per la query.If the BaseTableName is not returned for every column in the query results, the .NET Framework Data Provider for ODBC tries to parse the SQL statement to find the table names involved in the query. Questa operazione funziona con le semplici istruzioni SELECT, INSERT, DELETE e SELECT, ma non con stored procedure o istruzioni SELECT basate sui join.This works with UPDATE, INSERT, DELETE and simple SELECT statements, but not with stored procedures or SELECT statements based on joins. Se da questa tabella mancano alcune o tutte le informazioni sullo schema, il OdbcCommandBuilder non funzionerà correttamente, perché non dispone di informazioni sufficienti sullo schema per generare automaticamente le istruzioni INSERT, UPDATE o DELETE corrette.If some or all the schema information is missing from this table, the OdbcCommandBuilder will not work correctly, because it has insufficient schema information to automatically generate the correct INSERT, UPDATE, or DELETE statements.

Per assicurarsi che le colonne di metadati restituiscano le informazioni corrette, è necessario chiamare ExecuteReader con il parametro behavior impostato su info.To make sure that metadata columns return the correct information, you must call ExecuteReader with the behavior parameter set to KeyInfo. In caso contrario, è possibile che alcune colonne della tabella dello schema restituiscano dati predefiniti, null o errati.Otherwise, some of the columns in the schema table may return default, null, or incorrect data.

Quando si utilizza ODBC.NET per Oracle tramite il driver ODBC, le colonne chiave con alias non vengono riconosciute come chiavi.When you use ODBC.NET to Oracle via the ODBC driver, aliased key columns are not recognized as keys. Ciò influiscono sulle colonne IsKey e Unique della tabella dello schema di OdbcDataReader.This affects the IsKey and IsUnique columns in the schema table of the OdbcDataReader. Influiscono inoltre sulla capacità di OdbcCommandBuilder di generare la logica di aggiornamento.It also affects the OdbcCommandBuilder's ability to generate updating logic. Si consiglia di non usare un alias per una colonna chiave primaria.Consider not using an alias for a primary key column.

Nota

Il driver ODBC di Microsoft Jet restituisce sempre le colonne Unique index e Primary Key come Nullable indipendentemente dal fatto che siano nullable o meno.The Microsoft Jet ODBC driver always returns unique index and primary key columns as nullable regardless of whether they are nullable or not. Il driver non restituisce inoltre informazioni sulla chiave primaria. restituisce solo un elenco di indici univoci e delle relative colonne, incluse le colonne chiave primaria, senza distinguere tra di essi.The driver also does not return primary key information; it only returns a list of unique indexes and their columns, including primary key columns, without differentiating among them.

Si applica a

Vedi anche