Mapping dei tipi di dati SQL Server (ADO.NET)

SQL Server e .NET Framework sono basati su sistemi di tipi diversi. La struttura Decimal .NET Framework dispone ad esempio di una scala massima di 28, mentre i tipi di dati decimali e numerici di SQL Server dispongono di una scala massima di 38. Per mantenere l'integrità dei dati in caso di lettura e scrittura dei dati, SqlDataReader espone metodi delle funzioni di accesso tipizzate specifici di SQL Server che restituiscono oggetti di System.Data.SqlTypes, nonché metodi delle funzioni di accesso che restituiscono tipi .NET Framework. Sia i tipi SQL Server che i tipi .NET Framework sono rappresentati anche dalle enumerazioni nelle classi DbType e SqlDbType, che è possibile utilizzare quando si specificano tipi di dati SqlParameter.

Nella tabella seguente sono illustrati il tipo .NET Framework dedotto, le enumerazioni DbType e SqlDbType e i metodi delle funzioni di accesso per SqlDataReader.

Tipo del Motore di database di SQL Server

Tipo .NET Framework

Enumerazione SqlDbType

Funzione di accesso tipizzata SqlTypes SqlDataReader

Enumerazione DbType

Funzione di accesso tipizzata DbType SqlDataReader

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

(solo SQL Server 2008)

DateTime

Date

GetSqlDateTime

Date

GetDateTime

datetime

DateTime

DateTime

GetSqlDateTime

DateTime

GetDateTime

datetime2

(solo SQL Server 2008)

DateTime2

DateTime2

GetSqlDateTime

DateTime2

GetDateTime

datetimeoffset

(solo SQL Server 2008)

DateTimeOffset

DateTimeOffset

none

DateTimeOffset

GetDateTimeOffset

decimal

Decimal

Decimal

GetSqlDecimal

Decimal

GetDecimal

Attributo FILESTREAM (varbinary(max)

Byte[]

VarBinary

GetSqlBytes

Binary

GetBytes

float

Double

Float

GetSqlDouble

Double

GetDouble

image

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

GetSqlDecimal

Decimal

GetDecimal

sql_variant

Object *

Variant

GetSqlValue *

Object

GetValue *

text

String

Char[]

Text

GetSqlString

String

GetString

GetChars

time

(solo SQL Server 2008)

TimeSpan

Time

none

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

none

* Utilizzare una funzione di accesso tipizzata specifica se è noto il tipo sottostante di sql_variant.

Riferimenti alla documentazione online di SQL Server

Per ulteriori informazioni sui tipi di dati di SQL Server, vedere la documentazione online di SQL Server corrispondente alla versione di SQL Server in uso.

SQL Server 2000

SQL Server 2005

SQL Server 2008

Data Types (informazioni in lingua inglese)

Tipi di dati (Motore di database)

Tipi di dati (Motore di database)

Vedere anche

Concetti

Configurazione di parametri e di tipi di dati dei parametri (ADO.NET)

Altre risorse

Tipi di dati SQL Server e ADO.NET

Dati binari e con valori di grandi dimensioni SQL Server (ADO.NET)

Mapping dei tipi di dati in ADO.NET