SQL Server 数据类型映射

SQL Server 和 .NET Framework 基于不同的类型系统。 例如,.NET Framework Decimal 结构的最大小数位数为 28,而 SQL Server 的 decimal 和 numeric 数据类型的最大小数位数为 38。 为在读取和写入数据时维护数据完整性,SqlDataReader 将公开用于返回 System.Data.SqlTypes 的对象的 SQL Server 特定的类型化访问器方法以及用于返回 .NET Framework 类型的访问器方法。 SQL Server 类型和 .NET Framework 类型也可通过 DbTypeSqlDbType 类中的枚举表示,当您指定 SqlParameter 数据类型时可以使用这些枚举。

下表显示了推断的 .NET Framework 类型、DbTypeSqlDbType 枚举以及 SqlDataReader 的访问器方法。

SQL Server 数据库引擎类型 .NET Framework 类型 SqlDbType 枚举 SqlDataReader SqlTypes 类型化访问器 DbType 枚举 SqlDataReader DbType 类型化访问器
bigint Int64 BigInt GetSqlInt64 Int64 GetInt64
二进制 Byte[] VarBinary GetSqlBinary Binary GetBytes
布尔型 Bit GetSqlBoolean Boolean GetBoolean
字符串

Char[]
Char GetSqlString AnsiStringFixedLength

String
GetString

GetChars
date 1

(SQL Server 2008 及更高版本)
DateTime Date 1 GetSqlDateTime Date 1 GetDateTime
datetime DateTime DateTime GetSqlDateTime DateTime GetDateTime
datetime2

(SQL Server 2008 及更高版本)
DateTime DateTime2 DateTime2 GetDateTime
日期时间偏移量

(SQL Server 2008 及更高版本)
日期时间偏移 (DateTimeOffset) DateTimeOffset DateTimeOffset GetDateTimeOffset
Decimal 十进制 Decimal GetSqlDecimal Decimal GetDecimal
FILESTREAM 属性 (varbinary(max)) Byte[] VarBinary GetSqlBytes Binary GetBytes
FLOAT 加倍 Float GetSqlDouble Double GetDouble
图像 Byte[] Binary GetSqlBinary Binary GetBytes
整数 (int) Int32 Int GetSqlInt32 Int32 GetInt32
十进制 Money GetSqlMoney Decimal GetDecimal
nchar 字符串

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntext 字符串

Char[]
NText GetSqlString String GetString

GetChars
数字 十进制 Decimal GetSqlDecimal Decimal GetDecimal
nvarchar 字符串

Char[]
NVarChar GetSqlString String GetString

GetChars
真正 单身 Real GetSqlSingle Single GetFloat
rowversion Byte[] Timestamp GetSqlBinary Binary GetBytes
smalldatetime DateTime DateTime GetSqlDateTime DateTime GetDateTime
smallint Int16 SmallInt GetSqlInt16 Int16 GetInt16
smallmoney 十进制 SmallMoney GetSqlMoney Decimal GetDecimal
SQL变体 对象 2 Variant GetSqlValue 2 Object GetValue 2
文本 字符串

Char[]
Text GetSqlString String GetString

GetChars
时间

(SQL Server 2008 及更高版本)
TimeSpan Time Time GetTimeSpan
时间戳 Byte[] Timestamp GetSqlBinary Binary GetBytes
tinyint 字节(Byte) TinyInt GetSqlByte Byte GetByte
唯一标识符 Guid UniqueIdentifier GetSqlGuid Guid GetGuid
varbinary Byte[] VarBinary GetSqlBinary Binary GetBytes
varchar 字符串

Char[]
VarChar GetSqlString %> GetString

GetChars
xml Xml Xml GetSqlXml Xml

1 无法将 DbTypeSqlParameter 属性设置为 SqlDbType.Date
2 如果已知 sql_variant 的基础类型,则使用特定的类型化访问器。

SQL Server 文档

有关 SQL Server 数据类型的详细信息,请参阅数据类型 (Transact-SQL)

另请参阅