Сопоставления типов данных SQL Server

В SQL Server и .NET Framework используются различные системы типов. Например, максимальная разрядность структуры .NET Framework Decimal составляет 28, в то время как максимальная разрядность десятичных и числовых типов данных SQL Server - 38. Чтобы обеспечить целостность данных при чтении и записи, объект SqlDataReader предоставляет характерные для SQL Server типизированные методы доступа, возвращающие объекты System.Data.SqlTypes, а также методы доступа, возвращающие типы .NET Framework. Типы данных SQL Server и .NET Framework также представлены перечислениями в классах DbType и SqlDbType, которые можно использовать при указании типов данных SqlParameter.

В следующей таблице приведены выводимый тип .NET Framework DbType и перечисления SqlDbType, а также методы доступа для SqlDataReader.

Тип ядра СУБД SQL Server Тип платформы .NET Framework Перечисление SqlDbType Типизированный метод доступа SqlDataReader SqlTypes Перечисление DbType Типизированный метод доступа SqlDataReader DbType
BIGINT Int64 BigInt GetSqlInt64 Int64 GetInt64
binary Byte[] VarBinary GetSqlBinary Binary GetBytes
bit Логическое Bit GetSqlBoolean Boolean GetBoolean
char Строка

Char[]
Char GetSqlString AnsiStringFixedLength,

String
GetString

GetChars
date 1

(SQL Server 2008 и более поздние версии)
Дата и время Date1 GetSqlDateTime Date1 GetDateTime
DATETIME Дата и время DateTime GetSqlDateTime DateTime GetDateTime
datetime2

(SQL Server 2008 и более поздние версии)
Дата и время DateTime2 Нет DateTime2 GetDateTime
datetimeoffset

(SQL Server 2008 и более поздние версии)
DateTimeOffset DateTimeOffset нет DateTimeOffset GetDateTimeOffset
Decimal Decimal Decimal GetSqlDecimal Decimal GetDecimal
FILESTREAM attribute (varbinary(max)) Byte[] VarBinary GetSqlBytes Binary GetBytes
FLOAT Double Float GetSqlDouble Double GetDouble
Изображение Byte[] Binary GetSqlBinary Binary GetBytes
INT Int32 Int GetSqlInt32 Int32 GetInt32
money Decimal Money GetSqlMoney Decimal GetDecimal
nchar Строка

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntext Строка

Char[]
NText GetSqlString String GetString

GetChars
NUMERIC Decimal Decimal GetSqlDecimal Decimal GetDecimal
nvarchar Строка

Char[]
NVarChar GetSqlString String GetString

GetChars
real Один Real GetSqlSingle Single GetFloat
rowversion Byte[] Timestamp GetSqlBinary Binary GetBytes
smalldatetime Дата и время DateTime GetSqlDateTime DateTime GetDateTime
smallint Int16 SmallInt GetSqlInt16 Int16 GetInt16
smallmoney Decimal SmallMoney GetSqlMoney Decimal GetDecimal
sql_variant Объект 2 Variant GetSqlValue2 Object GetValue2
text Строка

Char[]
Text GetSqlString String GetString

GetChars
time

(SQL Server 2008 и более поздние версии)
TimeSpan Time нет 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 Строка

Char[]
VarChar GetSqlString AnsiString, String GetString

GetChars
xml Xml Xml GetSqlXml Xml нет

1 Вы не можете задать для свойства DbType параметра SqlParameter значение SqlDbType.Date.
2 Если известен базовый тип sql_variant, используйте конкретный типизированный метод доступа.

документация по SQL Server

Дополнительные сведения о типах данных SQL Server см. в статье Типы данных (Transact-SQL).

См. также