首页 > 代码库 > SQL Server 与 ADO.NET 数据类型映射

SQL Server 与 ADO.NET 数据类型映射

SQL Server 数据类型映射

.NET Framework 4.5

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

BigInt

GetSqlInt64

Int64

GetInt64

binary

Byte[]

VarBinary

GetSqlBinary

Binary

GetBytes

bit

Boolean

Bit

GetSqlBoolean

Boolean

GetBoolean

char

String

Char[]

Char

GetSqlString

AnsiStringFixedLength,‘ data-guid="69315f161846ce575921f7e8bafc78c4">AnsiStringFixedLength,

String

GetString

GetChars

date

(SQL Server 2008 及更高版本)

DateTime

Date

GetSqlDateTime

Date

GetDateTime

datetime

DateTime

DateTime

GetSqlDateTime

DateTime

GetDateTime

datetime2

(SQL Server 2008 及更高版本)

DateTime

DateTime2

DateTime2

GetDateTime

datetimeoffset

(SQL Server 2008 及更高版本)

DateTimeOffset

DateTimeOffset

DateTimeOffset

GetDateTimeOffset

decimal

Decimal

Decimal

GetSqlDecimal

Decimal

GetDecimal

FILESTREAM 特性 (varbinary(max))

Byte[]

VarBinary

GetSqlBytes

Binary

GetBytes

float

Double

Float

GetSqlDouble

Double

GetDouble

image

Byte[]

Binary

GetSqlBinary

Binary

GetBytes

int

Int32

Int

GetSqlInt32

Int32

GetInt32

money

Decimal

Money

GetSqlMoney

Decimal

GetDecimal

nchar

String

Char[]

NChar

GetSqlString

StringFixedLength

GetString

GetChars

ntext

String

Char[]

NText

GetSqlString

String

GetString

GetChars

numeric

Decimal

Decimal

GetSqlDecimal

Decimal

GetDecimal

nvarchar

String

Char[]

NVarChar

GetSqlString

String

GetString

GetChars

real

Single

Real

GetSqlSingle

Single

GetFloat

rowversion

Byte[]

Timestamp

GetSqlBinary

Binary

GetBytes

smalldatetime

DateTime

DateTime

GetSqlDateTime

DateTime

GetDateTime

smallint

Int16

SmallInt

GetSqlInt16

Int16

GetInt16

smallmoney

Decimal

SmallMoney

GetSqlMoney

Decimal

GetDecimal

sql_variant

Object*

Variant

GetSqlValue *‘ data-guid="151dbb46642460ff6a636a2a5105694d">GetSqlValue *

Object

GetValue *‘ data-guid="75d783b4d465860239fb4339f2fda9a7">GetValue *

文本

String

Char[]

Text

GetSqlString

String

GetString

GetChars

time

(SQL Server 2008 及更高版本)

TimeSpan

Time

Time

GetDateTime

timestamp

Byte[]

Timestamp

GetSqlBinary

Binary

GetBytes

tinyint

Byte

TinyInt

GetSqlByte

Byte

GetByte

uniqueidentifier

Guid

UniqueIdentifier

GetSqlGuid

Guid

GetGuid

varbinary

Byte[]

VarBinary

GetSqlBinary

Binary

GetBytes

varchar

String

Char[]

VarChar

GetSqlString

AnsiString, String‘ data-guid="173a01b9808fbf5be1d53455dae125be">AnsiString ,String

GetString

GetChars

xml

Xml

Xml

GetSqlXml

Xml

sql_variant.‘ data-guid="8b0a179011d8c715f0adedd79ff5e9c5">* 如果已知 sql_variant 的基础类型,则使用特定的类型化访问器。