SQL Server 与 ADO.NET 数据类型映射
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 |
||||
binary |
Byte[] |
||||
bit |
Boolean |
||||
char |
String Char[] |
||||
date (SQL Server 2008 及更高版本) |
DateTime |
||||
datetime |
DateTime |
||||
datetime2 (SQL Server 2008 及更高版本) |
DateTime |
无 |
|||
datetimeoffset (SQL Server 2008 及更高版本) |
DateTimeOffset |
无 |
|||
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 * |
|||
文本 |
String Char[] |
||||
time (SQL Server 2008 及更高版本) |
TimeSpan |
无 |
|||
timestamp |
Byte[] |
||||
tinyint |
Byte |
||||
uniqueidentifier |
Guid |
||||
varbinary |
Byte[] |
||||
varchar |
String Char[] |
||||
xml |
Xml |
无 |
* 如果已知 sql_variant 的基础类型,则使用特定的类型化访问器。