SQL Server データ型と .NET Framework データ型の対応
更新 : 2005 年 12 月 5 日
次の表は、Microsoft SQL Server データ型と、それぞれに対応する System.Data.SqlTypes 名前空間の SQL Server CLR (共通言語ランタイム) データ型および Microsoft .NET Framework のネイティブ CLR データ型を示します。
SQL Server データ型 |
CLR データ型 (SQL Server) |
CLR データ型 (.NET Framework) |
varbinary |
SqlBytes, SqlBinary |
Byte[] |
binary |
SqlBytes, SqlBinary |
Byte[] |
varbinary(1), binary(1) |
SqlBytes, SqlBinary |
byte, Byte[] |
image |
なし |
なし |
varchar |
なし |
なし |
char |
なし |
なし |
nvarchar(1), nchar(1) |
SqlChars, SqlString |
Char, String, Char[] |
nvarchar |
SqlChars, SqlString SQLChars はデータの転送とアクセスに適しています。また、SQLString は文字列操作に適しています。 |
String, Char[] |
nchar |
SqlChars, SqlString |
String, Char[] |
text |
なし |
なし |
ntext |
なし |
なし |
uniqueidentifier |
SqlGuid |
Guid |
rowversion |
なし |
Byte[] |
bit |
SqlBoolean |
Boolean |
tinyint |
SqlByte |
Byte |
smallint |
SqlInt16 |
Int16 |
int |
SqlInt32 |
Int32 |
bigint |
SqlInt64 |
Int64 |
smallmoney |
SqlMoney |
Decimal |
money |
SqlMoney |
Decimal |
numeric |
SqlDecimal |
Decimal |
decimal |
SqlDecimal |
Decimal |
real |
SqlSingle |
Single |
float |
SqlDouble |
Double |
smalldatetime |
SqlDateTime |
DateTime |
datetime |
SqlDateTime |
DateTime |
sql_variant |
なし |
Object |
User-defined type(UDT) |
なし |
同じアセンブリまたは依存アセンブリ内のユーザー定義型にバインドされている同じクラス |
table |
なし |
なし |
cursor |
なし |
なし |
timestamp |
なし |
なし |
xml |
SqlXml |
なし |
out パラメータによるデータ型の自動変換
CLR メソッドでは、入力パラメータを out 修飾子 (Microsoft Visual C#) または <Out()> ByRef (Microsoft Visual Basic) でマークすることにより、呼び出し側のコードまたはプログラムに情報を返すことができます。System.Data.SqlTypes 名前空間での入力パラメータが CLR データ型で、呼び出し側のプログラムがこれと同等な SQL Server データ型を入力パラメータとして指定する場合、CLR メソッドがデータ型を返すと、自動的に型の変換が行われます。
たとえば、次の CLR ストアド プロシージャには、out (C#) または <Out()> ByRef (Visual Basic) でマークされている SqlInt32 CLR データ型の入力パラメータがあります。
C#
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ … }
Visual Basic
<Microsoft.SqlServer.Server.SqlProcedure> _
Public Shared Sub PriceSum( <Out()> ByRef value As SqlInt32)
…
End Sub
データベースでアセンブリがビルドおよび作成された後、SQL Server では、OUTPUT パラメータとして int の SQL Server データ型を指定する、次の Transact-SQL によりストアド プロシージャが作成されます。
CREATE PROCEDURE PriceSum (@sum int OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum
CLR ストアド プロシージャが呼び出されると、SqlInt32 データ型は自動的に int データ型に変換され、呼び出し側のプログラムに返されます。
ただし、out パラメータにより自動的にすべての CLR データ型を同等な SQL Server データ型に変換できるとは限りません。次の表に、これらの例外を示します。
CLR データ型 (SQL Server) |
SQL Server データ型 |
Decimal |
smallmoney |
SqlMoney |
smallmoney |
Decimal |
money |
DateTime |
smalldatetime |
SQLDateTime |
smalldatetime |
参照
その他の技術情報
.NET Framework での SQL Server データ型
データ型の変換 (データベース エンジン)
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2005 年 12 月 5 日 |
|