Mappage des types de données du fournisseur .NET Framework aux types de données .NET Framework
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 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 .NET Framework utilisé pour se connecter à la source.
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 déduit 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. Le 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.SqlType.
Les tableaux suivants illustrent le type .NET Framework déduit 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 .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 | Boolean | GetBoolean() | GetSqlBit() |
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() |
* 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. Consultez Extraction des données à l'aide de 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 résulte en 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, consultez Utilisation des événements du DataAdapter.