SQL Server 和 .NET Framework 基于不同的类型系统。 Decimal structure has a maximum scale of 28, whereas the SQL Server decimal and numeric data types have a maximum scale of 38.‘ data-guid="5192ddd1b197626d65c842bb2463470b">例如,.NET Framework Decimal 结构的最大小数位数为 28,而 SQL Server 的 decimal 和 numeric 数据类型的最大小数位数为 38。 SqlDataReader exposes SQL Server–specific typed accessor methods that return objects of System.Data.SqlTypes as well as accessor methods that return .NET Framework types.‘ data-guid="ad3b25e76f1f18f95f52acac05b6f59a">为了在读取和写入数据时维护数据的完整性,SqlDataReader 将公开用于返回 System.Data.SqlTypes 的对象的 SQL Server 特定的类型化访问器方法以及用于返回 .NET Framework 类型的访问器方法。 DbType and SqlDbType classes, which you can use when specifying SqlParameter data types.‘ data-guid="9fe7e247392ffde56fb9da07e16b17bf">SQL Server 类型和 .NET Framework 类型也可通过 DbType 和 SqlDbType 类中的枚举表示,当您指定 SqlParameter 数据类型时可以使用这些枚举。
DbType and SqlDbType enumerations, and the accessor methods for the SqlDataReader.‘ data-guid="30a3f44e5345b5ac5fe51e6bf19bc4bd">下表显示推断的 .NET Framework 类型、DbType 和 SqlDbType 枚举以及 SqlDataReader 的访问器方法。
SQL Server 数据库引擎类型 |
.NET Framework 类型 |
SqlDbType 枚举 |
SqlDataReader SqlTypes 类型化访问器 |
DbType 枚举 |
SqlDataReader DbType 类型化访问器 |
---|---|---|---|---|---|
bigint |
Int64 |
||||
binary |
Byte[] |
||||
bit |
Boolean |
||||
char |
String Char[] |
AnsiStringFixedLength,‘ data-guid="69315f161846ce575921f7e8bafc78c4">AnsiStringFixedLength, |
|||
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* |
GetSqlValue *‘ data-guid="151dbb46642460ff6a636a2a5105694d">GetSqlValue * |
GetValue *‘ data-guid="75d783b4d465860239fb4339f2fda9a7">GetValue * | ||
文本 |
String Char[] |
||||
time (SQL Server 2008 及更高版本) |
TimeSpan |
无 |
|||
timestamp |
Byte[] |
||||
tinyint |
Byte |
||||
uniqueidentifier |
Guid |
||||
varbinary |
Byte[] |
||||
varchar |
String Char[] |
AnsiString, String‘ data-guid="173a01b9808fbf5be1d53455dae125be">AnsiString ,String |
|||
xml |
Xml |
无 |
sql_variant.‘ data-guid="8b0a179011d8c715f0adedd79ff5e9c5">* 如果已知 sql_variant 的基础类型,则使用特定的类型化访问器。