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 类型也可通过 DbType 和 SqlDbType 类中的枚举表示,当您指定 SqlParameter 数据类型时可以使用这些枚举。

下表显示了推断的 .NET Framework 类型、DbType 和 SqlDbType 枚举以及 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
日期 1

(SQL Server 2008 及更高版本)
DateTime Date 1 GetSqlDateTime Date 1 GetDateTime
日期/时间 DateTime DateTime GetSqlDateTime DateTime GetDateTime
datetime2

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

(SQL Server 2008 及更高版本)
日期时间偏移 (DateTimeOffset) DateTimeOffset 无 DateTimeOffset GetDateTimeOffset
十进制 十进制 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 AnsiString、String GetString

GetChars
xml Xml Xml GetSqlXml Xml 无

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

SQL Server 文档

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

另请参阅