Сопоставления типов данных 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 DateTime GetSqlDateTime DateTime GetDateTime
datetime2

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

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

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntext Строка

Char[]
NText GetSqlString String GetString

GetChars
numeric Десятичное число 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 Десятичное число SmallMoney GetSqlMoney Decimal GetDecimal
sql_variant Объект 2 Variant GetSqlValue2 Object GetValue2
text Строка

Char[]
Text GetSqlString String GetString

GetChars
Время

(SQL Server 2008 и более поздние версии)
TimeSpan Time ничего Time GetDateTime
TIMESTAMP Byte[] Timestamp GetSqlBinary Binary GetBytes
tinyint Байт 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).

См. также