SQL Server のデータ型のマッピング

適用対象: .NET Framework .NET .NET Standard

ADO.NET のダウンロード

SQL Server と .NET Framework は異なる型システムを使用しています。 たとえば、.NET Framework の Decimal 構造体の最大小数点以下桁数は 28 ですが、SQL Server の decimal データ型と numeric データ型の最大小数点以下桁数は 38 です。 データを読み書きするときにデータの整合性を保つために、SqlDataReader では、.NET Framework の型を返すアクセサー メソッドと共に、System.Data.SqlTypes のオブジェクトを返す SQL Server 固有の型指定されたアクセサー メソッドを公開しています。 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 GetSqlBoolean Boolean GetBoolean
char 文字列

Char[]
Char GetSqlString AnsiStringFixedLength,

String
GetString

GetChars
日付 1

(SQL Server 2008 以降)
日時 Date 1 GetSqlDateTime Date 1 GetDateTime
datetime 日時 DateTime GetSqlDateTime DateTime GetDateTime
datetime2

(SQL Server 2008 以降)
日時 DateTime2 なし DateTime2 GetDateTime
datetimeoffset

(SQL Server 2008 以降)
DateTimeOffset DateTimeOffset none DateTimeOffset GetDateTimeOffset
10 進 10 進数 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
お金 10 進数 Money GetSqlMoney Decimal GetDecimal
nchar 文字列

Char[]
NChar GetSqlString StringFixedLength GetString

GetChars
ntext 文字列

Char[]
NText GetSqlString String GetString

GetChars
数値 10 進数 Decimal GetSqlDecimal Decimal GetDecimal
nvarchar 文字列

Char[]
NVarChar GetSqlString String GetString

GetChars
real Single Real GetSqlSingle Single GetFloat
rowversion Byte[] Timestamp GetSqlBinary Binary GetBytes
smalldatetime 日時 DateTime GetSqlDateTime DateTime GetDateTime
smallint Int16 SmallInt GetSqlInt16 Int16 GetInt16
少額のお金 10 進数 SmallMoney GetSqlMoney Decimal GetDecimal
sql_variant オブジェクト 2 Variant GetSqlValue 2 Object GetValue 2
SMS 送信 文字列

Char[]
Text GetSqlString String GetString

GetChars
時間

(SQL Server 2008 以降)
TimeSpan Time none 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 文字列

Char[]
VarChar GetSqlString AnsiString、String GetString

GetChars
XML Xml Xml GetSqlXml Xml none
json 文字列 Json GetSqlJson none none
ベクタ none Vector GetSqlVector none none

1DbType の SqlParameter プロパティを SqlDbType.Date に設定することはできません。
2sql_variant の基になる型がわかっている場合は、特定の型指定されたアクセサーを使用してください。

SQL Server ドキュメント

SQL Server のデータ型について詳しくは、「データ型 (Transact-SQL)」をご覧ください。