Сопоставления типов данных 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 и более поздние версии) |
Дата/время | Date 1 | GetSqlDateTime | Date 1 | 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 | GetSqlValue 2 | Object | GetValue 2 |
text | Строка Char[] |
Text | GetSqlString | String | GetString GetChars |
Время (SQL Server 2008 и более поздние версии) |
TimeSpan | Time | ничего | Time | GetTimeSpan |
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).