Dela via


SQL Server-datatypmappningar

SQL Server och .NET Framework baseras på olika typsystem. Till exempel har .NET Framework-strukturen Decimal en maximal skalning på 28, medan SQL Server decimal- och numeriska datatyper har en maximal skala på 38. För att upprätthålla dataintegriteten vid läsning och skrivning av data SqlDataReader exponerar SQL Server-specifika typspecifika åtkomstmetoder som returnerar objekt av System.Data.SqlTypes samt accessormetoder som returnerar .NET Framework-typer. Både SQL Server-typer och .NET Framework-typer representeras också av uppräkningar i klasserna DbType och SqlDbType som du kan använda när du anger SqlParameter datatyper.

I följande tabell visas den härledda .NET Framework-typen, DbType uppräkningar och SqlDbType åtkomstmetoder för SqlDataReader.

SQL Server Database Engine-typ .NET Framework-typ SqlDbType-uppräkning SqlDataReader SqlTypes-typad accessor DbType-uppräkning SqlDataReader DbType-typad accessor
Bigint Int64 BigInt GetSqlInt64 Int64 GetInt64
binär Byte[] VarBinary GetSqlBinary Binary GetBytes
lite grann Booleskt Bit GetSqlBoolean Boolean GetBoolean
röding Sträng

Tecken[]
Char GetSqlString AnsiStringFixedLength,

String
GetString

GetChars
datum 1

(SQL Server 2008 och senare)
Datum/tid Date 1 GetSqlDateTime Date 1 GetDateTime
tidpunkt Datum/tid DateTime GetSqlDateTime DateTime GetDateTime
datumtid2

(SQL Server 2008 och senare)
Datum/tid DateTime2 Ingen DateTime2 GetDateTime
datetimeoffset

(SQL Server 2008 och senare)
DateTimeOffset (tidpunkt med tidsförskjutning) DateTimeOffset inget DateTimeOffset GetDateTimeOffset
decimaltecken Decimal Decimal GetSqlDecimal Decimal GetDecimal
FILESTREAM-attribut (varbinary(max)) Byte[] VarBinary GetSqlBytes Binary GetBytes
flyttal Dubbel Float GetSqlDouble Double GetDouble
bild Byte[] Binary GetSqlBinary Binary GetBytes
heltal Int32 Int GetSqlInt32 Int32 GetInt32
pengar Decimal Money GetSqlMoney Decimal GetDecimal
nchar Sträng

Tecken[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntext Sträng

Tecken[]
NText GetSqlString String GetString

GetChars
numerisk Decimal Decimal GetSqlDecimal Decimal GetDecimal
nvarchar Sträng

Tecken[]
NVarChar GetSqlString String GetString

GetChars
verklig / äkta Enstaka Real GetSqlSingle Single GetFloat
rowversion Byte[] Timestamp GetSqlBinary Binary GetBytes
smalldatetime Datum/tid DateTime GetSqlDateTime DateTime GetDateTime
Smallint Int16 SmallInt GetSqlInt16 Int16 GetInt16
småpengar Decimal SmallMoney GetSqlMoney Decimal GetDecimal
sql_variant Objekt 2 Variant GetSqlValue 2 Object GetValue 2
texten Sträng

Tecken[]
Text GetSqlString String GetString

GetChars
Tid

(SQL Server 2008 och senare)
Tidsintervall Time inget Time GetTimeSpan
tidsstämpel Byte[] Timestamp GetSqlBinary Binary GetBytes
tinyint byte TinyInt GetSqlByte Byte GetByte
unik identifierare GUID UniqueIdentifier GetSqlGuid Guid GetGuid
varbinary Byte[] VarBinary GetSqlBinary Binary GetBytes
Varchar Sträng

Tecken[]
VarChar GetSqlString AnsiString, String GetString

GetChars
XML Xml Xml GetSqlXml Xml inget

1 Du kan inte ange DbType egenskapen för en SqlParameter till SqlDbType.Date.
2 Använd en specifik typad accessor om du känner till den underliggande typen av sql_variant.

Dokumentation om SQL Server

Mer information om SQL Server-datatyper finns i Datatyper (Transact-SQL).

Se även