
正文
SQL Server 数据类型映射(转载)
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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 |
| binary | Byte[] | VarBinary | GetSqlBinary | Binary | GetBytes |
| bit | Boolean | Bit | GetSqlBoolean | Boolean | GetBoolean |
| char | String Char[] | Char | GetSqlString | AnsiStringFixedLength, String | GetString GetChars |
| 日期1 (SQL Server 2008 及更高版本) | DateTime | Date 1 | GetSqlDateTime | Date 1 | 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 |
| 图像 | 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 |
| 数值 | Decimal | Decimal | GetSqlDecimal | Decimal | GetDecimal |
| nvarchar | String Char[] | NVarChar | GetSqlString | String | GetString GetChars |
| 实数 | 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 | 对象2 | Variant | GetSqlValue 2 | Object | GetValue 2 |
| 文本 | String Char[] | Text | GetSqlString | String | GetString GetChars |
| 时间 (SQL Server 2008 及更高版本) | TimeSpan | Time | 无 | Time | GetDateTime |
| 时间戳 | 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 | GetString GetChars |
| xml | Xml | Xml | GetSqlXml | Xml | 无 |
1无法设置DbType属性SqlParameter到SqlDbType.Date。
2使用特定的类型化访问器,如果你知道的基础类型sql_variant。
来源https://docs.microsoft.com/zh-cn/dotnet/framework/data/adonet/sql-server-data-type-mappings







