SQL Serverのデータ型に相当するC#


594

次のSQL Serverデータ型の場合、C#の対応するデータ型は何ですか?

正確な数値

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money

おおよその数値

float
real

日時

date
datetimeoffset
datetime2
smalldatetime
datetime
time

文字列

char
varchar
text

Unicode文字列

nchar
nvarchar
ntext

バイナリ文字列

binary
varbinary
image

その他のデータ型

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

(ソース:MSDN


1
これはあなたが探しているものだと思います:CLRパラメータデータのマッピング
Andrew Hare

回答:


1093

これはSQL Server 2005用です。SQL Server 2008SQL Server 2008 R2SQL Server 2012、およびSQL Server 2014の表の更新バージョンがあります。

SQL Serverのデータ型とそれに相当する.NET Framework

次の表は、Microsoft SQL Serverのデータ型、System.Data.SqlTypes名前空間のSQL Serverの共通言語ランタイム(CLR)に相当するもの、およびMicrosoft .NET Frameworkの同等のネイティブCLRをリストしています。

SQL Server data type          CLR data type (SQL Server)    CLR data type (.NET Framework)  
varbinary                     SqlBytes, SqlBinary           Byte[]  
binary                        SqlBytes, SqlBinary           Byte[]  
varbinary(1), binary(1)       SqlBytes, SqlBinary           byte, Byte[] 
image                         None                          None

varchar                       None                          None
char                          None                          None
nvarchar(1), nchar(1)         SqlChars, SqlString           Char, String, Char[]     
nvarchar                      SqlChars, SqlString           String, Char[] 
nchar                         SqlChars, SqlString           String, Char[] 
text                          None                          None
ntext                         None                          None

uniqueidentifier              SqlGuid                       Guid 
rowversion                    None                          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                   None                          Object  
User-defined type(UDT)        None                          user-defined type     
table                         None                          None 
cursor                        None                          None
timestamp                     None                          None 
xml                           SqlXml                        None

2
.NETのintは、この表のInt32と同じであるため、SQL Serverのintにもなります。
ÖrjanJämte

short.NetフレームワークでどのCLRデータ型(SQL Server)を使用する必要がありますか?
Yogesh Patel

3
@yogeshpatel shortdocs.microsoft.com/en-us/dotnet/csharp/language-reference/…)は、このリストではSystem.Int16と同じです。したがって、SQL Serverではそれはsmallintです。
ÖrjanJämte


7

SQL Serverと.NET Frameworkは、異なる型システムに基づいています。たとえば、.NET Frameworkの小数構造は、SQL Serverのdecimalとnumericデータ型は38クリックの最大の規模を持っているのに対し、ここだ、28の最大の規模を持っているリンク!詳細について

https://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx


なぜ私がこの回答で-1を得るのか説明してもらえますか?
サルマン2017年

8
回答に反対票を投じたのは私ではありませんでしたが、リンクを提供するのではなく、質問に回答するのが理想的です。
Esteban Verbel 2017年

6

誰かがC#およびSQL Server形式との間で変換するメソッドを探している場合は、簡単な実装を次に示します。

private readonly string[] SqlServerTypes = { "bigint", "binary", "bit",  "char", "date",     "datetime", "datetime2", "datetimeoffset", "decimal", "filestream", "float",  "geography",                              "geometry",                              "hierarchyid",                              "image",  "int", "money",   "nchar",  "ntext",  "numeric", "nvarchar", "real",   "rowversion", "smalldatetime", "smallint", "smallmoney", "sql_variant", "text",   "time",     "timestamp", "tinyint", "uniqueidentifier", "varbinary", "varchar", "xml" };
private readonly string[] CSharpTypes    = { "long",   "byte[]", "bool", "char", "DateTime", "DateTime", "DateTime",  "DateTimeOffset", "decimal", "byte[]",     "double", "Microsoft.SqlServer.Types.SqlGeography", "Microsoft.SqlServer.Types.SqlGeometry", "Microsoft.SqlServer.Types.SqlHierarchyId", "byte[]", "int", "decimal", "string", "string", "decimal", "string",   "Single", "byte[]",     "DateTime",      "short",    "decimal",    "object",      "string", "TimeSpan", "byte[]",    "byte",    "Guid",             "byte[]",    "string",  "string" };

public string ConvertSqlServerFormatToCSharp(string typeName)
{
    var index = Array.IndexOf(SqlServerTypes, typeName);

    return index > -1
        ? CSharpTypes[index]
        : "object";
}

public string ConvertCSharpFormatToSqlServer(string typeName)
{
    var index = Array.IndexOf(CSharpTypes, typeName);

    return index > -1
        ? SqlServerTypes[index]
        : null;
}

編集:誤植を修正

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.