Compartilhar via


Mapeamentos de tipos de dados do SQL Server

O SQL Server e o .NET Framework baseiam-se em diferentes sistemas de tipo. Por exemplo, a estrutura Decimal do .NET Framework tem uma escala máxima de 28, enquanto os tipos de dados decimais e numéricos do SQL Server têm uma escala máximo de 38. Para manter a integridade dos dados ao ler e gravar dados, o SqlDataReader expõe métodos acessadores tipados específicos do SQL Server que retornam objetos de System.Data.SqlTypes, bem como métodos acessadores que retornam tipos do .NET Framework. Os tipos do SQL Server e do .NET Framework também são representados por enumerações nas classes DbType e SqlDbType, que você pode usar ao especificar tipos de dados SqlParameter.

A tabela a seguir mostra o tipo de .NET Framework inferido, as enumerações de DbType e SqlDbType e os métodos acessadores de SqlDataReader.

Tipo de mecanismo do Banco de Dados do SQL Server Tipo de .NET Framework Enumeração SqlDbType Acessador tipado SqlTypes de SqlDataReader Enumeração DbType Acessador tipado DbType de SqlDataReader
BIGINT Int64 BigInt GetSqlInt64 Int64 GetInt64
binário Byte[] VarBinary GetSqlBinary Binary GetBytes
bit Booliano Bit GetSqlBoolean Boolean GetBoolean
carvão fio

Char[]
Char GetSqlString AnsiStringFixedLength,

String
GetString

GetChars
data 1

(SQL Server 2008 e posteriores)
Datetime Date 1 GetSqlDateTime Date 1 GetDateTime
DATETIME Datetime DateTime GetSqlDateTime DateTime GetDateTime
`datetime2`

(SQL Server 2008 e posteriores)
Datetime DateTime2 Nenhum DateTime2 GetDateTime
datetimeoffset

(SQL Server 2008 e posteriores)
DateTimeOffset (representa uma data e hora com um desvio em relação ao horário UTC) DateTimeOffset nenhum DateTimeOffset GetDateTimeOffset
decimal Decimal Decimal GetSqlDecimal Decimal GetDecimal
Atributo FILESTREAM (varbinary(max)) Byte[] VarBinary GetSqlBytes Binary GetBytes
FLOAT Duplo Float GetSqlDouble Double GetDouble
imagem Byte[] Binary GetSqlBinary Binary GetBytes
INT Int32 Int GetSqlInt32 Int32 GetInt32
dinheiro Decimal Money GetSqlMoney Decimal GetDecimal
NCHAR fio

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntext fio

Char[]
NText GetSqlString String GetString

GetChars
numérico Decimal Decimal GetSqlDecimal Decimal GetDecimal
NVARCHAR fio

Char[]
NVarChar GetSqlString String GetString

GetChars
verdadeiro Solteiro 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 (variante SQL) Objeto 2 Variant GetSqlValue 2 Object GetValue 2
Texto fio

Char[]
Text GetSqlString String GetString

GetChars
tempo

(SQL Server 2008 e posteriores)
TimeSpan Time nenhum Time GetTimeSpan
carimbo de data/hora Byte[] Timestamp GetSqlBinary Binary GetBytes
TINYINT byte TinyInt GetSqlByte Byte GetByte
UNIQUEIDENTIFIER GUID UniqueIdentifier GetSqlGuid Guid GetGuid
varbinary Byte[] VarBinary GetSqlBinary Binary GetBytes
varchar fio

Char[]
VarChar GetSqlString AnsiString, String GetString

GetChars
Xml XML Xml GetSqlXml Xml nenhum

1 Não é possível definir a propriedade DbType de um SqlParameter como SqlDbType.Date.
2 Use um acessador tipado específico se você souber o tipo subjacente de sql_variant.

documentação do SQL Server

Para obter mais informações sobre tipos de dados do SQL Server, confira Tipos de dados (Transact-SQL).

Confira também