L'objet DataSet ADO.NET est indépendant de toute source de données spécifique. Les données d'un DataSet sont extraites d'une source de données et les modifications y sont répercutées à l'aide d'un DataAdapter. Autrement dit, lorsqu'un DataAdapter remplit un objet DataTable dans un DataSet avec des valeurs provenant d'une source de données, les types de données des colonnes du DataTable qui en résultent sont des types .NET Framework et non des types spécifiques au fournisseur de données .NET Framework utilisé pour se connecter à la source de données.
De même, lorsqu'un DataReader retourne une valeur d'une source de données, la valeur qui en résulte est stockée dans une variable locale qui a un type .NET Framework.
Pour les opérations Fill du DataAdapter et les méthodes Get du DataReader, le type .NET Framework est inféré du type retourné du fournisseur de données .NET Framework. Il est recommandé d'utiliser les méthodes d'accesseurs typées du DataReader lorsque vous connaissez le type spécifique de la valeur retournée. Ces méthodes sont plus performantes car elles retournent une valeur comme type .NET Framework spécifique, éliminant ainsi la nécessité d'une conversion de types supplémentaire. L'objet SqlDataReader expose des méthodes d'accesseurs typées spécifiques à SQL Server si un type .NET Framework ne répond pas aux besoins de l'application. Ces méthodes retournent des objets de System.Data.SqlTypes.
Remarque |
|---|
| Une prise en charge de type amélioré a été ajoutée dans ADO.NET 2.0 pour System.Data.SqlTypes. Pour plus d'informations, voir Utilisation de SqlTypes. |
Les tableaux suivants illustrent le type .NET Framework inféré pour les types de données de Microsoft SQL Server, OLE DB et ODBC. Les méthodes d'accesseurs typées pour le DataReader sont également répertoriées.
Remarque |
|---|
| Les valeurs null des types de données du fournisseur de données .NET Framework sont représentées par DBNull.Value. |
Fournisseur de données .NET Framework pour SQL Server
| Type SQL Server | Type .NET Framework | Accesseur typé .NET Framework | Accesseur typé SqlType |
|---|---|---|---|
| bigint | Int64 | GetInt64() | GetSqlInt64() |
| binary | Byte[] | GetBytes() | GetSqlBinary() |
| bit | Booléen | GetBoolean() | GetSqlBoolean() |
| Char | String Char[] | GetString() GetChars() | GetSqlString() |
| datetime | DateTime | GetDateTime() | GetSqlDateTime() |
| decimal | Decimal | GetDecimal() | GetSqlDecimal() |
| float | Double | GetDouble() | GetSqlDouble() |
| image | Byte[] | GetBytes() | GetSqlBinary() |
| int | Int32 | GetInt32() | GetSqlInt32() |
| money | Decimal | GetDecimal() | GetSqlMoney() |
| nchar | String Char[] | GetString() GetChars() | GetSqlString() |
| ntext | String Char[] | GetString() GetChars() | GetSqlString() |
| numeric | Decimal | GetDecimal() | GetSqlDecimal() |
| nvarchar | String Char[] | GetString() GetChars() | GetSqlString() |
| real | Single | GetFloat() | GetSqlSingle() |
| smalldatetime | DateTime | GetDateTime() | GetSqlDateTime() |
| smallint | Int16 | GetInt16() | GetSqlInt16() |
| smallmoney | Decimal | GetDecimal() | GetSqlDecimal() |
| sql_variant | Object* | GetValue() * | GetSqlValue() * |
| text | String Char[] | GetString() GetChars() | GetSqlString() |
| timestamp | Byte[] | GetBytes() | GetSqlBinary() |
| tinyint | Byte | GetByte() | GetSqlByte() |
| uniqueidentifier | Guid | GetGuid() | GetSqlGuid() |
| varbinary | Byte[] | GetBytes() | GetSqlBinary() |
| varchar | String Char[] | GetString() GetChars() | GetSqlString() |
| xml | Xml | GetXml | GetSqlXml() |
* Il est recommandé d'utiliser un accesseur typé spécifique si vous connaissez le type sous-jacent de sql_variant.
Fournisseur de données .NET Framework pour OLE DB
| Type ADO | Type OLE DB | Type .NET Framework | Accesseur typé .NET Framework |
|---|---|---|---|
| adBigInt | DBTYPE_I8 | Int64 | GetInt64() |
| adBinary | DBTYPE_BYTES | Byte[] | GetBytes() |
| adBoolean | DBTYPE_BOOL | Boolean | GetBoolean() |
| adBSTR | DBTYPE_BSTR | String | GetString() |
| adChapter | DBTYPE_HCHAPTER | Pris en charge dans le DataReader. Voir Extraction de données à l'aide d'un DataReader. | GetValue() |
| adChar | DBTYPE_STR | String | GetString() |
| adCurrency | DBTYPE_CY | Decimal | GetDecimal() |
| adDate | DBTYPE_DATE | DateTime | GetDateTime() |
| adDBDate | DBTYPE_DBDATE | DateTime | GetDateTime() |
| adDBTime | DBTYPE_DBTIME | DateTime | GetDateTime() |
| adDBTimeStamp | DBTYPE_DBTIMESTAMP | DateTime | GetDateTime() |
| adDecimal | DBTYPE_DECIMAL | Decimal | GetDecimal() |
| adDouble | DBTYPE_R8 | Double | GetDouble() |
| adError | DBTYPE_ERROR | ExternalException | GetValue() |
| adFileTime | DBTYPE_FILETIME | DateTime | GetDateTime() |
| adGUID | DBTYPE_GUID | Guid | GetGuid() |
| adIDispatch | DBTYPE_IDISPATCH * | Object | GetValue() |
| adInteger | DBTYPE_I4 | Int32 | GetInt32() |
| adIUnknown | DBTYPE_IUNKNOWN * | Object | GetValue() |
| adNumeric | DBTYPE_NUMERIC | Decimal | GetDecimal() |
| adPropVariant | DBTYPE_PROPVARIANT | Object | GetValue() |
| adSingle | DBTYPE_R4 | Single | GetFloat() |
| adSmallInt | DBTYPE_I2 | Int16 | GetInt16() |
| adTinyInt | DBTYPE_I1 | Byte | GetByte() |
| adUnsignedBigInt | DBTYPE_UI8 | UInt64 | GetValue() |
| adUnsignedInt | DBTYPE_UI4 | UInt32 | GetValue() |
| adUnsignedSmallInt | DBTYPE_UI2 | UInt16 | GetValue() |
| adUnsignedTinyInt | DBTYPE_UI1 | Byte | GetByte() |
| adVariant | DBTYPE_VARIANT | Object | GetValue() |
| adWChar | DBTYPE_WSTR | String | GetString() |
| adUserDefined | DBTYPE_UDT | non pris en charge |
|
| adVarNumeric | DBTYPE_VARNUMERIC | non pris en charge |
|
-
* Pour les types OLE DB DBTYPE_IUNKNOWN et DBTYPE_IDISPATCH, la référence d'objet est une représentation marshalée du pointeur.
Fournisseur de données .NET Framework pour ODBC
| Type ODBC | Type .NET Framework | Accesseur typé .NET Framework |
|---|---|---|
| SQL_BIGINT | Int64 | GetInt64() |
| SQL_BINARY | Byte[] | GetBytes() |
| SQL_BIT | Boolean | GetBoolean() |
| SQL_CHAR | String Char[] | GetString() GetChars() |
| SQL_DECIMAL | Decimal | GetDecimal() |
| SQL_DOUBLE | Double | GetDouble() |
| SQL_GUID | Guid | GetGuid() |
| SQL_INTEGER | Int32 | GetInt32() |
| SQL_LONG_VARCHAR | String Char[] | GetString() GetChars() |
| SQL_LONGVARBINARY | Byte[] | GetBytes() |
| SQL_NUMERIC | Decimal | GetDecimal() |
| SQL_REAL | Single | GetFloat() |
| SQL_SMALLINT | Int16 | GetInt16() |
| SQL_TINYINT | Byte | GetByte() |
| SQL_TYPE_TIMES | DateTime | GetDateTime() |
| SQL_TYPE_TIMESTAMP | DateTime | GetDateTime() |
| SQL_VARBINARY | Byte[] | GetBytes() |
| SQL_WCHAR | String Char[] | GetString() GetChars() |
| SQL_WLONGVARCHAR | String Char[] | GetString() GetChars() |
| SQL_WVARCHAR | String Char[] | GetString() GetChars() |
Fournisseur de données .NET Framework pour Oracle
| Type Oracle | Type .NET Framework | Accesseur typé .NET Framework | Accesseur typé OracleType |
|---|---|---|---|
| BFILE | Byte[] | GetBytes() | GetOracleBFile() |
| BLOB | Byte[] | GetBytes() | GetOracleLob() |
| CHAR | String Char[] | GetString() GetChars() | GetOracleString() |
| CLOB | String Char[] | GetString() GetChars() | GetOracleLob() |
| DATE | DateTime | GetDateTime() | GetOracleDateTime() |
| FLOAT | Decimal | GetDecimal() | GetOracleNumber() ** |
| INTEGER | Decimal | GetDecimal() | GetOracleNumber() ** |
| INTERVAL YEAR TO MONTH * | Int32 | GetInt32() | GetOracleMonthSpan() |
| INTERVAL DAY TO SECOND * | Timespan | GetTimeSpan() | GetOracleTimeSpan() |
| LONG | String Char[] | GetString() GetChars() | GetOracleString() |
| LONG RAW | Byte[] | GetBytes() | GetOracleBinary() |
| NCHAR | String Char[] | GetString() GetChars() | GetOracleString() |
| NCLOB | String Char[] | GetString() GetChars() | GetOracleLob() |
| NUMBER | Decimal | GetDecimal() | GetOracleNumber() ** |
| NVARCHAR2 | String Char[] | GetString() GetChars() | GetOracleString() |
| RAW | Byte[] | GetBytes() | GetOracleBinary() |
| REF CURSOR |
|
|
|
| ROWID | String Char[] | GetString() GetChars() | GetOracleString() |
| TIMESTAMP * | DateTime | GetDateTime() | GetOracleDateTime() |
| TIMESTAMP WITH LOCAL TIME ZONE * | DateTime | GetDateTime() | GetOracleDateTime() |
| TIMESTAMP WITH TIME ZONE * | DateTime | GetDateTime() | GetOracleDateTime() |
| UNSIGNED INTEGER | Decimal | GetDecimal() | GetOracleNumber() ** |
| VARCHAR2 | String Char[] | GetString() GetChars() | GetOracleString() |
* Le type Oracle spécifié est uniquement disponible lors de l'utilisation combinée du client Oracle 9i et du logiciel serveur.
** Un type NUMBER Oracle peut avoir un nombre maximal de 38 chiffres significatifs. Le type decimal .NET Framework est limité à 28 chiffres. La lecture d'un type NUMBER Oracle dans un type decimal .NET Framework se traduit par une exception OverflowException pour les valeurs NUMBER dépassant 28 chiffres. Si vous lisez une valeur NUMBER Oracle à partir de OracleDataReader, il est recommandé d'appeler la méthode d'accesseur typée GetOracleNumber pour retourner les valeurs NUMBER Oracle en tant que OracleNumber. Si vous remplissez un DataSet, vous pouvez utiliser l'événement FillError pour déterminer si une exception OverflowException s'est produite et effectuer l'action adéquate. Pour plus d'informations sur l'événement FillError, voir Utilisation des événements du DataAdapter.
Remarque
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ