更新:November 2007
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 | ||||
| binary | Byte[] | ||||
| bit | Boolean | ||||
| char | String Char[] | ||||
| date (仅适用 SQL Server 2008) | DateTime | ||||
| datetime | DateTime | ||||
| datetime2 (仅适用 SQL Server 2008) | DateTime2 | ||||
| datetimeoffset (仅适用 SQL Server 2008) | DateTimeOffset | none | |||
| decimal | Decimal | ||||
| FILESTREAM 属性 (varbinary(max) | Byte[] | ||||
| float | Double | ||||
| image | Byte[] | ||||
| int | Int32 | ||||
| money | Decimal | ||||
| nchar | String Char[] | ||||
| ntext | String Char[] | ||||
| numeric | Decimal | ||||
| nvarchar | String Char[] | ||||
| real | Single | ||||
| rowversion | Byte[] | ||||
| smalldatetime | DateTime | ||||
| smallint | Int16 | ||||
| smallmoney | Decimal | ||||
| sql_variant | Object* | GetValue * | |||
| text | String Char[] | ||||
| time (仅适用 SQL Server 2008) | TimeSpan | none | |||
| timestamp | Byte[] | ||||
| tinyint | Byte | ||||
| uniqueidentifier | Guid | ||||
| varbinary | Byte[] | ||||
| varchar | String Char[] | ||||
| xml | Xml | none | 
* 如果已知 sql_variant 的基础类型,则使用特定的类型化访问器。
SQL Server 联机丛书参考
有关 SQL Server 数据类型的更多信息,请参见与您所使用的 SQL Server 版本对应的 SQL Server 联机丛书。
| SQL Server 2000 | SQL Server 2005 | SQL Server 2008 | 
|---|---|---|