Asignaciones de tipos de datos de SQL Server

SQL Server y .NET Framework se basan en sistemas de tipos distintos. Por ejemplo, la estructura Decimal de .NET Framework tiene una escala máxima de 28, mientras que los tipos de datos decimal y numérico de SQL Server tienen una escala máxima de 38. Para mantener la integridad de los datos al leer y escribir datos, SqlDataReader expone SQL Server métodos de accessor System.Data.SqlTypes con tipo específicos que devuelven objetos de , así como métodos de accessor que devuelven .NET Framework tipos. Los tipos de SQL Server y los de .NET Framework se representan también mediante enumeraciones en las clases DbType y SqlDbType, que puede usar al especificar los tipos de datos SqlParameter.

En la tabla siguiente se muestra el tipo de .NET Framework deducido, las enumeraciones DbType y SqlDbType y los métodos de descriptor de acceso para SqlDataReader.

Tipo de motor de base de datos SQL Server Tipo de .NET Framework Enumeración SqlDbType Descriptor de acceso con tipo SqlDataReader SqlTypes Enumeración DbType Descriptor de acceso con tipo SqlDataReader DbType
bigint Int64 BigInt GetSqlInt64 Int64 GetInt64
binary Byte[] VarBinary GetSqlBinary Binary GetBytes
bit Boolean Bit GetSqlBoolean Boolean GetBoolean
char String

Char[]
Char GetSqlString AnsiStringFixedLength,

String
GetString

GetChars
date 1

(SQL Server 2008 y posteriores)
DateTime DateDate GetSqlDateTime DateDate GetDateTime
datetime DateTime DateTime GetSqlDateTime DateTime GetDateTime
datetime2

(SQL Server 2008 y posteriores)
DateTime DateTime2 Ninguno DateTime2 GetDateTime
datetimeoffset

(SQL Server 2008 y posteriores)
DateTimeOffset DateTimeOffset ninguno DateTimeOffset GetDateTimeOffset
Decimal Decimal Decimal GetSqlDecimal Decimal GetDecimal
FILESTREAM attribute (varbinary(max)) Byte[] VarBinary GetSqlBytes Binary GetBytes
FLOAT Double Float GetSqlDouble Double GetDouble
imagen Byte[] Binary GetSqlBinary Binary GetBytes
int Int32 Int GetSqlInt32 Int32 GetInt32
money Decimal Money GetSqlMoney Decimal GetDecimal
NCHAR String

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntext String

Char[]
NText GetSqlString String GetString

GetChars
NUMERIC Decimal Decimal GetSqlDecimal Decimal GetDecimal
NVARCHAR String

Char[]
NVarChar GetSqlString String GetString

GetChars
real Single Real GetSqlSingle Single GetFloat
rowversion Byte[] Timestamp GetSqlBinary Binary GetBytes
smalldatetime DateTime DateTime GetSqlDateTime DateTime GetDateTime
SMALLINT Int16 SmallInt GetSqlInt16 Int16 GetInt16
SMALLMONEY Decimal SmallMoney GetSqlMoney Decimal GetDecimal
sql_variant Object 2 Variant GetSqlValueGetSqlValue Object GetValueGetValue
text String

Char[]
Text GetSqlString String GetString

GetChars
time

(SQL Server 2008 y posteriores)
TimeSpan Time ninguno Time GetDateTime
timestamp Byte[] Timestamp GetSqlBinary Binary GetBytes
TINYINT Byte TinyInt GetSqlByte Byte GetByte
UNIQUEIDENTIFIER Guid UniqueIdentifier GetSqlGuid Guid GetGuid
varbinary Byte[] VarBinary GetSqlBinary Binary GetBytes
varchar String

Char[]
VarChar GetSqlString AnsiString, String GetString

GetChars
Xml Xml Xml GetSqlXml Xml ninguno

1 No se puede establecer la propiedad de en SqlParameterSqlDbType.Date.
2 Use un accessor con tipo específico si conoce el tipo subyacente de .

SQL Server, documentación

Para obtener información sobre los tipos de datos de SQL Server, vea Tipos de datos (Transact-SQL).

Vea también