Mapowanie typu danych serwera SQL
Programy SQL Server i .NET Framework są oparte na różnych systemach typów. Na przykład struktura .NET Framework Decimal ma maksymalną skalę 28, natomiast typy danych dziesiętnych i liczbowych programu SQL Server mają maksymalną skalę 38. Aby zachować integralność danych podczas odczytywania i zapisywania danych, SqlDataReader uwidacznia metody dostępu specyficzne dla programu SQL Server, które zwracają obiekty System.Data.SqlTypes oraz metody dostępu zwracające typy programu .NET Framework. Typy programu SQL Server i typy programu .NET Framework są również reprezentowane przez wyliczenia w DbType klasach i SqlDbType , których można użyć podczas określania SqlParameter typów danych.
W poniższej tabeli przedstawiono wywnioskowany typ programu .NET Framework, DbType wyliczenia i SqlDbType oraz metody dostępu dla elementu SqlDataReader.
Typ aparatu bazy danych programu SQL Server | Typ programu .NET Framework | SqlDbType, wyliczenie | SqlDataReader SqlTypes, typizowane metody dostępu | DbType, wyliczenie | SqlDataReader DbType, typizowane akcesorium |
---|---|---|---|---|---|
bigint | Int64 | BigInt | GetSqlInt64 | Int64 | GetInt64 |
dane binarne | Bajt[] | VarBinary | GetSqlBinary | Binary | GetBytes |
bitowe | Wartość logiczna | Bit | GetSqlBoolean | Boolean | GetBoolean |
char | String Char[] |
Char | GetSqlString | AnsiStringFixedLength, String |
GetString GetChars |
data 1 (SQL Server 2008 i nowsze) |
DateTime | Date 1 | GetSqlDateTime | Date 1 | GetDateTime |
datetime | DateTime | DateTime | GetSqlDateTime | DateTime | GetDateTime |
datetime2 (SQL Server 2008 i nowsze) |
DateTime | DateTime2 | Brak | DateTime2 | GetDateTime |
datetimeoffset (SQL Server 2008 i nowsze) |
DateTimeOffset | DateTimeOffset | Brak | DateTimeOffset | GetDateTimeOffset |
decimal | Dziesiętne | Decimal | GetSqlDecimal | Decimal | GetDecimal |
ATRYBUT FILESTREAM (varbinary(max)) | Bajt[] | VarBinary | GetSqlBytes | Binary | GetBytes |
liczba zmiennoprzecinkowa | Liczba rzeczywista | Float | GetSqlDouble | Double | GetDouble |
obraz | Bajt[] | Binary | GetSqlBinary | Binary | GetBytes |
int | Int32 | Int | GetSqlInt32 | Int32 | GetInt32 |
pieniędzy | Dziesiętne | Money | GetSqlMoney | Decimal | GetDecimal |
nchar | String Char[] |
NChar | GetSqlString | StringFixedLength | GetString GetChars |
ntekst | String Char[] |
NText | GetSqlString | String | GetString GetChars |
numeryczne | Dziesiętne | Decimal | GetSqlDecimal | Decimal | GetDecimal |
nvarchar | String Char[] |
NVarChar | GetSqlString | String | GetString GetChars |
rzeczywiste | Pojedynczy | Real | GetSqlSingle | Single | GetFloat |
rowversion | Bajt[] | Timestamp | GetSqlBinary | Binary | GetBytes |
smalldatetime | DateTime | DateTime | GetSqlDateTime | DateTime | GetDateTime |
smallint | Int16 | SmallInt | GetSqlInt16 | Int16 | GetInt16 |
smallmoney | Dziesiętne | SmallMoney | GetSqlMoney | Decimal | GetDecimal |
sql_variant | Obiekt 2 | Variant | GetSqlValue 2 | Object | GetValue 2 |
text | String Char[] |
Text | GetSqlString | String | GetString GetChars |
time (SQL Server 2008 i nowsze) |
przedział_czasu | Time | Brak | Time | GetTimeSpan |
timestamp | Bajt[] | Timestamp | GetSqlBinary | Binary | GetBytes |
tinyint | Byte | TinyInt | GetSqlByte | Byte | GetByte |
uniqueidentifier | Identyfikator GUID | UniqueIdentifier | GetSqlGuid | Guid | GetGuid |
varbinary | Bajt[] | VarBinary | GetSqlBinary | Binary | GetBytes |
varchar | String Char[] |
VarChar | GetSqlString | AnsiString, String | GetString GetChars |
xml | XML | Xml | GetSqlXml | Xml | Brak |
1 Nie można ustawić DbType
właściwości obiektu SqlParameter
na SqlDbType.Date
wartość .
2 Użyj określonego typu metody dostępu, jeśli znasz podstawowy typ .sql_variant
SQL Server documentation (Dokumentacja programu SQL Server)
Aby uzyskać więcej informacji na temat typów danych programu SQL Server, zobacz Typy danych (Transact-SQL).