Asignar los tipos de datos del proveedor de datos de .NET Framework para los tipos de datos de .NET Framework

El objeto DataSet de ADO.NET es independiente de cualquier origen de datos específico. Los datos de un DataSet se recuperan desde un origen de datos y los cambios que se realizan en ellos se reflejan en el origen de datos mediante un DataAdapter. Esto significa que cuando un DataAdapter llena una tabla DataTable en un DataSet con valores obtenidos de un origen de datos, los tipos de datos resultantes de las columnas de la DataTable son tipos de .NET Framework en lugar de los tipos específicos del proveedor de datos de .NET Framework utilizado para realizar la conexión con el origen de datos.

De la misma forma, cuando un DataReader devuelve un valor desde un origen de datos, el valor resultante se almacena en una variable local que tiene un tipo de .NET Framework.

Tanto para las operaciones Fill del DataAdapter como para los métodos Get del DataReader, el tipo de .NET Framework se deduce a partir del devuelto por el proveedor de datos de .NET Framework. Es aconsejable utilizar los métodos de descriptor de acceso con tipo de DataReader cuando se conozca el tipo específico del valor que se va a devolver. Los métodos de descriptor de acceso con tipo mejoran el rendimiento ya que devuelven el valor con un tipo determinado de .NET Framework, con lo que se evita tener que efectuar conversiones adicionales de tipo. SqlDataReader expone métodos específicos de descriptor de acceso con tipo de SQL Server en el caso de que ninguno de los tipos de .NET Framework se ajuste a las necesidades de la aplicación. Los métodos específicos de descriptor de acceso con tipo de SQL Server devuelven objetos del tipo System.Data.SqlType.

En las tablas siguientes se muestra el tipo de .NET Framework que se deduce para cada uno de los tipos de datos de Microsoft SQL Server, OLE DB y ODBC. También se incluyen los descriptores de acceso con tipo para el DataReader.

Nota   Los valores nulos de cualquier tipo de datos del proveedor de datos de .NET Framework se representan mediante DBNull.Value.

Proveedor de datos de .NET Framework para SQL Server

Tipo de SQL Server Tipo de .NET Framework Descriptor de acceso con tipo de .NET Framework Descriptor de acceso con tipo de 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()

* Es aconsejable utilizar un descriptor de acceso con tipo cuando se conoce el tipo subyacente de sql_variant.

Proveedor de datos de .NET Framework para OLE DB

Tipo de ADO Tipo de OLE DB Tipo de .NET Framework Descriptor de acceso con tipo de .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 Se puede usar con DataReader. Vea Recuperar datos mediante 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 no se admite    
adVarNumeric DBTYPE_VARNUMERIC no se admite    

* En el caso de los tipos de OLE DB DBTYPE_IUNKNOWN y DBTYPE_IDISPATCH, la referencia del objeto es una representación del puntero con las referencias calculadas.

Proveedor de datos de .NET Framework para ODBC

Tipo de ODBC Tipo de .NET Framework Descriptor de acceso con tipo de .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()

Proveedor de datos de .NET Framework para Oracle

Tipo de Oracle Tipo de .NET Framework Descriptor de acceso con tipo de .NET Framework Descriptor de acceso con tipo de 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()

* El tipo de Oracle especificado sólo está disponible cuando se utilizan tanto el cliente de Oracle 9i como el software de servidor.

** Un tipo NUMBER de Oracle puede tener un máximo de 38 dígitos significativos. El tipo decimal de .NET Framework está limitado a 28 dígitos. Al leer un tipo NUMBER de Oracle en un tipo decimal de .NET Framework se produce una excepción OverflowException para los valores NUMBER que tengan más de 28 dígitos. Si lee un valor NUMBER de Oracle desde un objeto OracleDataReader, se recomienda que llame al método de descriptor de acceso con tipo GetOracleNumber para devolver los valores NUMBER de Oracle como OracleNumber. Si rellena un DataSet, puede utilizar el evento FillError para determinar si se ha producido una excepción OverflowException y emprender la acción adecuada. Para obtener información acerca del evento FillError, vea Trabajar con eventos DataAdapter.

Vea también

Llenar un DataSet desde un DataAdapter