Mapeamentos de tipo de dados do SQL Server

Aplica-se a: .NET Framework .NET .NET Standard

Baixar ADO.NET

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

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

Tipo de Mecanismo de Banco de Dados do SQL Server Tipo do .NET Framework Enumeração SqlDbType SqlDataReader SqlTypes acessador com tipo definido A enumeração DbType SqlDataReader DbType acessador digitado
bigint Int64 BigInt GetSqlInt64 Int64 GetInt64
binário Byte[] VarBinary GetSqlBinary Binary GetBytes
pouco booleano Bit GetSqlBoolean Boolean GetBoolean
char Cordão

Char[]
Char GetSqlString AnsiStringFixedLength,

String
GetString

GetChars
data 1

(SQL Server 2008 e posterior)
DateTime Date 1 GetSqlDateTime Date 1 GetDateTime
datetime DateTime DateTime GetSqlDateTime DateTime GetDateTime
datetime2

(SQL Server 2008 e posterior)
DateTime DateTime2 Nenhum DateTime2 GetDateTime
datetimeoffset

(SQL Server 2008 e posterior)
DateTimeOffset DateTimeOffset nenhuma DateTimeOffset GetDateTimeOffset
decimal Decimal Decimal GetSqlDecimal Decimal GetDecimal
Atributo FILESTREAM (varbinary(max)) Byte[] VarBinary GetSqlBytes Binary GetBytes
float Double Float GetSqlDouble Double GetDouble
imagem Byte[] Binary GetSqlBinary Binary GetBytes
int Int32 Int GetSqlInt32 Int32 GetInt32
dinheiro Decimal Money GetSqlMoney Decimal GetDecimal
Nchar Cordão

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntexto Cordão

Char[]
NText GetSqlString String GetString

GetChars
numérico Decimal Decimal GetSqlDecimal Decimal GetDecimal
nvarchar Cordão

Char[]
NVarChar GetSqlString String GetString

GetChars
real 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 Objeto 2 Variant GetSqlValue 2 Object GetValue 2
enviar SMS Cordão

Char[]
Text GetSqlString String GetString

GetChars
time

(SQL Server 2008 e posterior)
TimeSpan Time nenhuma Time GetDateTime
carimbo de data/hora Byte[] Timestamp GetSqlBinary Binary GetBytes
tinyint Byte TinyInt GetSqlByte Byte GetByte
uniqueidentifier Guia UniqueIdentifier GetSqlGuid Guid GetGuid
varbinary Byte[] VarBinary GetSqlBinary Binary GetBytes
Varchar Cordão

Char[]
VarChar GetSqlString AnsiString, String GetString

GetChars
XML XML Xml GetSqlXml Xml nenhuma
Json Cordão Json GetSqlJson nenhuma nenhuma
vetor nenhuma Vector GetSqlVector nenhuma nenhuma

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

Documentação do SQL Server

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