Condividi tramite


Mapping dei tipi di dati SQL Server

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 nella 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 usare quando si specificano tipi di dati SqlParameter.

La tabella seguente illustra il tipo di .NET Framework dedotto, le enumerazioni DbType e SqlDbType e i metodi della funzione di accesso per SqlDataReader.

Tipo di 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
binario Byte[] VarBinary GetSqlBinary Binary GetBytes
pezzo Booleano Bit GetSqlBoolean Boolean GetBoolean
Char Stringa

Char[]
Char GetSqlString AnsiStringFixedLength,

String
GetString

GetChars
data 1

(SQL Server 2008 e versioni successive)
Data/Ora Date 1 GetSqlDateTime Date 1 GetDateTime
data e ora Data/Ora DateTime GetSqlDateTime DateTime GetDateTime
datetime2

(SQL Server 2008 e versioni successive)
Data/Ora DateTime2 Nessuno DateTime2 GetDateTime
datetimeoffset

(SQL Server 2008 e versioni successive)
DateTimeOffset (struttura per gestire data e ora con fuso orario) DateTimeOffset Nessuno DateTimeOffset GetDateTimeOffset
decimale Decimale Decimal GetSqlDecimal Decimal GetDecimal
Attributo FILESTREAM (varbinary(max)) Byte[] VarBinary GetSqlBytes Binary GetBytes
galleggiare Doppio Float GetSqlDouble Double GetDouble
immagine Byte[] Binary GetSqlBinary Binary GetBytes
Int Int32 Int GetSqlInt32 Int32 GetInt32
denaro Decimale Money GetSqlMoney Decimal GetDecimal
nchar Stringa

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntext Stringa

Char[]
NText GetSqlString String GetString

GetChars
numerico Decimale Decimal GetSqlDecimal Decimal GetDecimal
nvarchar Stringa

Char[]
NVarChar GetSqlString String GetString

GetChars
autentico Singola Real GetSqlSingle Single GetFloat
versione di riga Byte[] Timestamp GetSqlBinary Binary GetBytes
smalldatetime Data/Ora DateTime GetSqlDateTime DateTime GetDateTime
smallint Int16 SmallInt GetSqlInt16 Int16 GetInt16
piccola somma di denaro Decimale SmallMoney GetSqlMoney Decimal GetDecimal
sql_variant Oggetto 2 Variant GetSqlValue 2 Object GetValue 2
Testo Stringa

Char[]
Text GetSqlString String GetString

GetChars
tempo

(SQL Server 2008 e versioni successive)
Intervallo di tempo Time Nessuno Time GetTimeSpan
Marca temporale Byte[] Timestamp GetSqlBinary Binary GetBytes
tinyint Byte TinyInt GetSqlByte Byte GetByte
identificatore univoco GUID UniqueIdentifier GetSqlGuid Guid GetGuid
varbinary Byte[] VarBinary GetSqlBinary Binary GetBytes
varchar Stringa

Char[]
VarChar GetSqlString AnsiString, String GetString

GetChars
XML XML Xml GetSqlXml Xml Nessuno

1 Non è possibile impostare la proprietà DbType di un SqlParameter su SqlDbType.Date.
2 Usare una funzione di accesso tipizzata specifica se è noto il tipo sottostante di sql_variant.

Documentazione di SQL Server

Per altre informazioni sui tipi di dati di SQL Server, vedere Tipi di dati (Transact-SQL).

Vedi anche