web-dev-qa-db-ja.com

SQL Serverのデータ型と同等のC#

次の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 _

509
George Stocker

これは 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
948
Örjan Jämte

SQL Serverと.NET Frameworkは異なるタイプのシステムに基づいています。たとえば、.NET Frameworkの10進数構造体の最大スケールは28ですが、SQL Serverの10進数および数値データ型の最大スケールは38です。ここをクリックしてください リンク !詳しくは

https://msdn.Microsoft.com/ja-jp/library/cc716729(v=vs.110).aspx

6
Salman

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

SQL Server and .Net Data Type mapping

4
Must.Tek

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",             "bite[]",    "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;
}
3
AndreFeijo