Mapeamentos de tipo de dados do SQL Server

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, bem como métodos de acessador que retornam tipos do System.Data.SqlTypes .NET Framework. Ambos os tipos do SQL Server e do DbType .NET Framework também são representados por enumerações nas classes and SqlDbType , que você pode usar ao especificar SqlParameter tipos de dados.

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

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

Char[]
Char GetSqlString AnsiStringFixedLength,

String
GetString

GetChars
data 1

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

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

(SQL Server 2008 e posterior)
DateTimeOffset DateTimeOffset nenhum DateTimeOffset GetDateTimeOffset
decimal Decimal Decimal GetSqlDecimal Decimal GetDecimal
Atributo FILESTREAM (varbinary(max)) Byte[] VarBinary GetSqlBytes Binary GetBytes
flutuante Duplo Float GetSqlDouble Double GetDouble
image Byte[] Binary GetSqlBinary Binary GetBytes
número inteiro Int32 Int GetSqlInt32 Int32 GetInt32
dinheiro Decimal Money GetSqlMoney Decimal GetDecimal
Nchar String

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntexto String

Char[]
NText GetSqlString String GetString

GetChars
numérico Decimal Decimal GetSqlDecimal Decimal GetDecimal
Nvarchar String

Char[]
NVarChar GetSqlString String GetString

GetChars
real Única Real GetSqlSingle Single GetFloat
versão de linha Byte[] Timestamp GetSqlBinary Binary GetBytes
PequenoDateTime DateTime DateTime GetSqlDateTime DateTime GetDateTime
smallint Int16 SmallInt GetSqlInt16 Int16 GetInt16
dinheiro pequeno Decimal SmallMoney GetSqlMoney Decimal GetDecimal
sql_variant Objeto 2 Variant GetSqlValue 2 Object GetValue 2
texto String

Char[]
Text GetSqlString String GetString

GetChars
hora

(SQL Server 2008 e posterior)
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 String

Char[]
VarChar GetSqlString AnsiString, String GetString

GetChars
xml Xml Xml GetSqlXml Xml nenhum

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).

Consulte também